第一件事
欣赏这可能是一个愚蠢的问题,但我使用GraphQL来自RDF / Linked Data世界并且很难理解我将如何返回集合。基本上我想要一些我可以选择的东西,让我们通过他们的Characters
说出id
的列表(使用GraphQL文档中的示例)。在SPARQL中,我使用VALUES
子句然后绑定,如:
VALUES { <http://uri/id-1> <http://uri/id-2> <http://uri/id-3> }
我认为这样的事情会是我想要的(伪代码)
{
human(id: ["1", "2", "3", "4", "5"]) {
name
height
}
}
Aliases有点做我想要的,但我不想提前或手动指定不同的命名返回值是什么 - 我想在我的代码中说出一个列表标识:
[1 2 3 4 5]
...并且有一个可以接受该ID数组的查询,并根据上面的伪查询返回一个可预测的非标量形状。
第二件事
我还假设事实上不可能让查询解析为Human
或[Human]
- 它必须是一个或另一个?如果是这样的话,没什么大不了的,我只会满足于后者......但是我觉得我现在对这一点感到非常困惑。
答案 0 :(得分:9)
首先,您需要通过添加“人类”来扩展您的查询:
extend type Query {
humans(listId: [String!]): [Human!]
human(id: ObjID!): Human
}
第二 - 为它写一个解析器。
Query: {
humans(root, {listId}, { Human }) {
return Human.fillAllByListId(listId);
},
...
},
答案 1 :(得分:0)
Whit Hasura,您可以这样做(IDK如果仅在Hasura上有效,则可以使用IDK)
query getConfigurationList($ids: [String!]!) {
configuration (where: {id:{_in: $ids}}){
id
value
}
}
这里是docs