gpt4 book ai didi

GraphQL Apollo 模式委托(delegate) : info. mergeInfo 未定义

转载 作者:行者123 更新时间:2023-12-03 23:51:59 26 4
gpt4 key购买 nike

我关注了官方doc to delegate a graphql schema这表明为了做到这一点,必须使用方法 delegateSchema可以在属性 mergeInfo 上找到论据 info传递给解析器:

resolver: (parent, args, ctx, info) => {
return info.mergeInfo.delegateSchema({
// Schema delegation options...
})
}

但是没有属性 mergeInfoinfo争论 !所以我得到这个错误信息: GraphQL Error GraphQL error: Cannot read property 'delegateToSchema' of undefined考虑到这些是 info 的顶级属性,这是正常的。 :
console.log(Object.keys(info))
[
'fieldName',
'fieldNodes',
'returnType',
'parentType',
'path',
'schema',
'fragments',
'rootValue',
'operation',
'variableValues',
'cacheControl'
]

它甚至看起来像 mergeInfo type definition of the GraphQLResolveInfo object 中未提及

文档是过时的还是我遗漏了什么?

谢谢

最佳答案

mergeInfo仅在您使用 mergeSchemas 时注入(inject)到 info 对象中将两个或多个模式缝合在一起。此外,它只会被注入(inject)到您作为模式拼接的一部分添加的字段的解析器中——模式的解析器不会受到影响(在其中一个的上下文中委托(delegate)给另一个模式实际上没有意义反正现有的模式)。
这是一个简单的例子:

const { makeExecutableSchema, mergeSchemas } = require('graphql-tools')

const schemaA = makeExecutableSchema({
typeDefs: `
type Query {
foo: String
}
`,
})
const schemaB = makeExecutableSchema({
typeDefs: `
type Query {
bar: String
}
`,
})
const typeDefs = `
extend type Query {
foobar: String
}
`
const schema = mergeSchemas({
schemas: [schemaA, schemaB, typeDefs],
})
在这里, foo 的解析器和 bar将无权访问 mergeInfo ,但 foobar 的解析器将要。

关于GraphQL Apollo 模式委托(delegate) : info. mergeInfo 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56207478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com