用于传递变量的 GraphQL 查询参数语法
Posted
技术标签:
【中文标题】用于传递变量的 GraphQL 查询参数语法【英文标题】:GraphQL query parameter syntax for passing variables 【发布时间】:2019-02-13 04:06:08 【问题描述】:因此,我尝试通过 Meteor 应用程序中的 GraphQL 查询访问数据库中的特定文档。我从我的 url 解析文档 ID,我正在尝试创建一个 gql 查询来获取该文档,但是我的查询返回未定义,因为查询的参数未定义。我不确定我哪里出了问题,因为我对 GraphQL 还是很陌生。
查询
const contactId = instance.getContactId();
const CONTACT_QUERY = gql`
query contact
contact(_id: "$contactId")
_id
name
customerId
phone
email
position
decisionMaker
`;
架构
type Contact
_id: String!
name: String!
customerId: String
phone: String
email: String
position: String
decisionMaker: String
type Query
contacts: [Contact]
contact(_id: String!): Contact
解析器
import Contacts from './contacts.js';
export default
Query:
contacts()
return Contacts.find().fetch();
,
contact(contactId)
console.log(contactId);
return Contacts.findOne(_id: contactId);
,
;
【问题讨论】:
variables
不会以这种方式传递 - 阅读文档并使用 query tester
/graphiql
【参考方案1】:
执行 GraphQL 查询不会将文档加载到 minimongo 中,因此您的客户端 Meteor.Collection
s 将为空。通常人们选择使用 Meteor 的实时数据系统(出版物、订阅、集合和方法)或 Apollo(查询和突变)。如果您想执行后者,请按照 Apollo 的文档了解如何执行 CONTACT_QUERY
并访问结果。
【讨论】:
我正在使用 Apollo 和 blaze-apollo 包来处理数据。在我的 Blaze 模板上,我根据 ID 参数构建查询,并使用 blaze-apollo 包运行查询。 const 联系人 = Template.instance().gqlQuery( 查询:CONTACTS_QUERY, ).get();问题是它返回未定义,当我拥有所需文档的 ID 时,我不确定如何正确构建查询。 查看此部分和链接的watchQuery
选项,包括variables
:github.com/Swydo/blaze-apollo#graphql-queries以上是关于用于传递变量的 GraphQL 查询参数语法的主要内容,如果未能解决你的问题,请参考以下文章