假设我有一个这样的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。