我已经阅读了很多关于graphql的资源,但不知怎的,我需要帮助来理解graphqls的解析参数。这是代码(来自fullstack的反应):
resolve(source, args, context, info) {
let includeFriends = false;
const selectionFragments = info.fieldASTs[0].selectionSet.selections;
const userSelections = selectionFragments.filter((selection) => {
return selection.kind === 'InlineFragment' && selection.typeCondition.\
name.value === 'User';
})
希望有人分享一些关于graphql的解析功能的资源,这些是什么 - > (source,args,context,info)参数?他们来自哪里?如何在代码上看到fieldAST?我查看schema.json文件,看不到它来自哪里,我怎么看?
答案 0 :(得分:2)
resolve
函数的目的是返回GraphQL查询中请求的每个字段的数据。
这些是什么 - > (source,args,context,info)参数?
他们来自哪里?如何在代码上看到fieldAST?
这取决于您使用的GraphQL实现。我假设您使用的是Facebook the Node.js reference implenatation。大多数开发人员可能不需要查看解析信息来解析他们的数据,因为它主要处理内部问题。但是如果你想了解它是如何生成的,那么你需要阅读源代码。 Here是在GraphQL执行阶段创建解析信息的地方。
要生成您自己的schema.json
,您可以使用从printSchema
导入的graphql/utilities
函数:
import { graphql } from 'graphql'
import { introspectionQuery, printSchema } from 'graphql/utilities'
/*
generates json of our schema for use by relay
*/
export default function (schema) {
return new Promise((resolve, reject) => {
graphql(schema, introspectionQuery).then(result => {
if (result.errors) {
console.error(`ERROR introspecting schema: ${result.errors}`)
reject(new Error(result.errors))
} else {
resolve({ json: result, graphql: printSchema(schema) })
}
})
})
}