将多个参数传递给GraphQL查询

时间:2017-09-27 10:52:08

标签: sparql graphql

第一件事

欣赏这可能是一个愚蠢的问题,但我使用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] - 它必须是一个或另一个?如果是这样的话,没什么大不了的,我只会满足于后者......但是我觉得我现在对这一点感到非常困惑。

2 个答案:

答案 0 :(得分:9)

首先,您需要通过添加“人类”来扩展您的查询:

extend type Query {
  humans(listId: [String!]): [Human!]
  human(id: ObjID!): Human
}

第二 - 为它写一个解析器。

Query: {
  humans(root, {listId}, { Human }) {
    return Human.fillAllByListId(listId);
  },
  ...
},

ID列表可以按如下方式传递: pass list of IDs

答案 1 :(得分:0)

Whit Hasura,您可以这样做(IDK如果仅在Hasura上有效,则可以使用IDK)

query getConfigurationList($ids: [String!]!) {
    configuration (where: {id:{_in: $ids}}){
        id
        value
    }
}

这里是docs