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

如何从同一个graphQL查询返回单个或多个结果?,graphql,Graphql,我已经设置了一个GraphQL端点,该端点返回给我一个客户端 query { client(id:1) { clientId } } 另一个返回客户端列表的 query { clients { clientId } } 对于这两个graphql查询,我有两个支持db查询,但是有没有一种方法可以同时对这两个查询使用一个query?或者什么是处理这个问题的graphql方法?graphql处理这个问题的方法正是您所做的。您通常需要在模式中使

我已经设置了一个
GraphQL
端点,该端点返回给我一个
客户端

query {
    client(id:1) {
      clientId
    }
}
另一个返回
客户端列表的

query {
    clients {
      clientId
    }
}

对于这两个
graphql
查询,我有两个支持db查询,但是有没有一种方法可以同时对这两个查询使用一个
query
?或者什么是处理这个问题的
graphql
方法?

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

您可以使用单个端点来返回
GraphQList
类型。此列表可以包含一个对象,也可以包含多个对象

在您的情况下,该单一端点将是
客户机
。您只需使用后端来查看GraphQLAPI的使用者是否提供了任何参数,即
clientId
。如果提供了
clientId
,请根据提供的
clientId
过滤您的
clienterpo
。否则,返回
客户端的整个列表(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();
  }
}
客户端:{
类型:新的GraphQList(clientType){
如果(参数id){
返回clientRepo.find(args.id);
}
返回clientRepo.findAll();
}
}

您可能希望访问以下链接: