假设我有一个像这样的 GraphQL 模式:
Schema {
user($id: ID) {
id: ID
name: String
}
}
我知道如何通过他的 ID 查询一个用户,我可以使用别名来查询多个用户,如下所示:
GetSomeMore {
john: user(id: "123") {
name
}
mary: user(id: "321") {
name
}
}
但是,假设我只有一个用户 ID 列表,并且想查询每个用户的姓名。我该如何编写这样的查询?
我能想出的方法是以太动态生成一个查询别名像 user1
, user2
等等,或者实现一个 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 .
关于javascript - 如何查询动态数量的别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41259454/