【问题标题】:How do I return a single or multiple results from the same graphQL query?如何从同一个 graphQL 查询返回单个或多个结果?
【发布时间】:2017-07-10 11:30:50
【问题描述】:

我设置了一个GraphQL 端点,它返回一个client

query {
    client(id:1) {
      clientId
    }
}

另一个返回clients列表

query {
    clients {
      clientId
    }
}

我对这 2 个 graphql 查询有 2 个后备数据库查询,但是有没有办法为这两个查询提供一个 query?或者graphql 的处理方式是什么?

【问题讨论】:

    标签: graphql


    【解决方案1】:

    处理这个问题的 GraphQL 方式正是您所做的。您通常需要架构中的单独字段来处理检索一项与多项,就像您在 REST API 中为这些设置单独的端点一样。

    【讨论】:

      【解决方案2】:

      您可以有一个返回 GraphQLList 类型的端点。此列表可以包含一个对象,也可以包含多个对象。

      在您的情况下,该单一端点将是 clients。您只需要使用您的后端来查看您的 GraphQL API 的使用者是否提供了任何参数,即clientId。如果提供了clientId,则通过提供的clientId 过滤您的clientRepo。否则返回clients 的整个列表(repo)。

      clients: {
        type: new GraphQLList(clientType), <--- Note this is a GraphQLList type
        args: {
          id: {
            type: GraphQLInt
          },
        },
        resolve: (parent, args) => {
          if (args.id) {
            return clientRepo.find(args.id);
          }
          return clientRepo.findAll();
        }
      }
      

      您可能想访问以下链接:

      https://jaketrent.com/post/return-array-graphql/

      https://stackoverflow.com/a/52773152/4195803

      【讨论】:

        猜你喜欢
        • 2020-10-23
        • 1970-01-01
        • 2023-04-09
        • 2010-09-25
        • 2020-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多