如何从同一个 graphQL 查询返回单个或多个结果?

Posted

技术标签:

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

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

query 
    client(id:1) 
      clientId
    

另一个返回clients列表

query 
    clients 
      clientId
    

我对这 2 个 graphql 查询有 2 个后备数据库查询,但是有没有办法为这两个查询提供一个 query?或者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://***.com/a/52773152/4195803

【讨论】:

以上是关于如何从同一个 graphQL 查询返回单个或多个结果?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GraphQL 查询变量中使用数组

GraphQL 从 MySQL 连接查询返回 null

单个 GraphQL 查询中的多个源 (Gatsby)

如何使用一个查询来解决 graphQL 中的多个 Rest 往返?

在 apollo graphql 的单个 useEffect 挂钩中使用多个查询

如何在单个 API 调用中多次使用相同的 GraphQL 查询。放大,DynamoDB