基于GraphQL参数更改后端服务

问题描述 投票:1回答:1

我也有一个GraphQL模式:

BigParent (parentParam: Boolean) {
  id
  name
  Parent {
    id
    name
    Child (childParam: Boolean) {
      id
      name
    }
  }
}

如何编写解析器,以便根据parentParamtrue还是childParamtrue来调用不同的后端API?第一种选择是直接的。第二种需要根据在Child级别返回的服务数据返回的值来重构Graph。

我没有将两个选项都视为真实,因为我会分配一些优先级,以便在传递父级参数时不考虑子级参数。

graphql apollo apollo-server
1个回答
0
投票
您可以通过遍历GraphQL解析器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(); }, }, };

© www.soinside.com 2019 - 2024. All rights reserved.