子解析器中的 GraphQL 参数
GraphQL arguments in child resolver
我正在使用 graphql-tools
并正在测试父子都接收参数的模式。
{
parentWithArg(a: "test") {
childWithArg(b: "test")
}
}
当子解析器运行时,我很困惑,因为第一个参数包含 args
,它与 spec 不匹配。 obj
参数似乎完全不存在?
const resolvers = {
Query: {
parentWithArg(obj, args, ctx) {
console.log('parentWithArg obj:', obj); // `{}` as expected
return {
childWithArg(obj, args, ctx) {
console.log('childWithArg obj:', obj); // `{ b: 'test' }`
return args.b; // null
}
};
},
},
};
这是 Apollo Launchpad 上的示例:https://launchpad.graphql.com/p08j03j8r0
当您 return 对象中的一个属性的函数由解析器 return 编辑时,就会发生这种情况——GraphQL 将调用该函数来解析该值,但它只会调用它使用三个参数而不是四个(参数、上下文和信息)。本例中的父值或 "root" 值被删除,因为本例中的函数被调用作为解析完全相同的根值的一部分。
要访问根值,childWithArg
字段的解析器应位于 Parent
类型的解析器之下,如下所示:
const resolvers = {
Query: {
parentWithArg(obj, args, ctx) {
return {}
},
},
Parent: {
childWithArg(obj, args, ctx) {
console.log('childWithArg obj:', obj)
return args.b
},
},
}
我正在使用 graphql-tools
并正在测试父子都接收参数的模式。
{
parentWithArg(a: "test") {
childWithArg(b: "test")
}
}
当子解析器运行时,我很困惑,因为第一个参数包含 args
,它与 spec 不匹配。 obj
参数似乎完全不存在?
const resolvers = {
Query: {
parentWithArg(obj, args, ctx) {
console.log('parentWithArg obj:', obj); // `{}` as expected
return {
childWithArg(obj, args, ctx) {
console.log('childWithArg obj:', obj); // `{ b: 'test' }`
return args.b; // null
}
};
},
},
};
这是 Apollo Launchpad 上的示例:https://launchpad.graphql.com/p08j03j8r0
当您 return 对象中的一个属性的函数由解析器 return 编辑时,就会发生这种情况——GraphQL 将调用该函数来解析该值,但它只会调用它使用三个参数而不是四个(参数、上下文和信息)。本例中的父值或 "root" 值被删除,因为本例中的函数被调用作为解析完全相同的根值的一部分。
要访问根值,childWithArg
字段的解析器应位于 Parent
类型的解析器之下,如下所示:
const resolvers = {
Query: {
parentWithArg(obj, args, ctx) {
return {}
},
},
Parent: {
childWithArg(obj, args, ctx) {
console.log('childWithArg obj:', obj)
return args.b
},
},
}