我也有一个GraphQL模式:
BigParent (parentParam: Boolean) {
id
name
Parent {
id
name
Child (childParam: Boolean) {
id
name
}
}
}
如何编写解析器,以便根据parentParam
是true
还是childParam
是true
来调用不同的后端API?第一种选择是直接的。第二种需要根据在Child
级别返回的服务数据返回的值来重构Graph。
我没有将两个选项都视为真实,因为我会分配一些优先级,以便在传递父级参数时不考虑子级参数。
info
参数来获取查询中任何字段选择的参数。假设您的查询看起来像这样:
query {
BigParent(parentParam: Boolean) {
id
name
Parent {
id
name
Child(childParam: Boolean) {
id
name
}
}
}
}
您应该可以执行以下操作:
function getChildParam(info) { // TODO: Return 'childParam' } const resolvers = { Query: { async BigParent(parent, args, context, info) { // 'args' contains the 'parentParam' argument const parentParam = args.parentParam; // Extract the 'childParam' argument from the info object const childParam = getChildParam(info); if (parentParam || childParam) { return context.datasource1.getData(); } return context.datasource2.getData(); }, }, };