假设我有一个这样的GraphQL模式:

Schema {
  user($id: ID) {
    id: ID
    name: String
  }
}

我知道如何通过他的ID查询一个用户,我可以使用别名来查询多个用户,如下所示:
GetSomeMore {
  john: user(id: "123") {
    name
  }
  mary: user(id: "321") {
    name
  }
}

但是,假设我只有一个用户ID列表,并且想查询其中每个用户的名称。我将如何编写这样的查询?

我能想到的方法是以太动态地生成带有user1user2等别名的查询,或者在服务器上实现users(ids: [ID])边缘。但是我觉得应该有一个更好的解决方案。在那儿?

(PS:我的代码示例可能存在语法错误,我将其更多地编写为伪代码,以阐明我的观点。)

最佳答案

您可以将该功能作为模式的一部分来实现,例如,使用id_in: [String]查询的users参数。

在Graphcool,我们使用filter参数来公开这样的功能。例如,您的查询可以这样完成:

query {
  allUsers(filter: {id_in: ["123", "321"]}) {
    id
    name
  }
}

结果是
{
  "data": {
    "allUsers": [
      {
        "id": "123",
        "name": "John"
      },
      {
        "id": "321",
        "name": "Mary"
      }
    ]
  }
}

要了解有关filter参数的更多信息,请检查the documentation

09-25 16:54
查看更多