将多个参数传递给GraphQL查询

Ale*_*ham 9 sparql graphql

第一件事

欣赏这可能是一个愚蠢的问题,但我正在使用来自RDF/Linked Data世界的GraphQL,并且在我如何返回集合时遇到很多麻烦.基本上我想要一些我可以选择的东西,让我们说一下Characters(使用GraphQL文档中的例子)的列表id.在SPARQL中,我将使用该VALUES子句然后绑定,如:

VALUES { <http://uri/id-1> <http://uri/id-2> <http://uri/id-3> }
Run Code Online (Sandbox Code Playgroud)

我假设这样的东西就是我想要的东西(伪代码)

{
  human(id: ["1", "2", "3", "4", "5"]) {
    name
    height
  }
}
Run Code Online (Sandbox Code Playgroud)

别名有点做我想要的,但我不想提前或手动指定不同的命名返回值是什么 - 我想在我的代码中传递一个ID列表:

[1 2 3 4 5]
Run Code Online (Sandbox Code Playgroud)

...并且有一个可以接受该ID数组的查询,并根据上面的伪查询返回一个可预测的非标量形状.

第二件事

我也假设事实上不可能让查询解析为Human或者[Human]- 它必须是一个或另一个?如果是这样的话,没什么大不了的,我只会满足于后者......但我想我现在对这个问题一般很困惑.

bor*_*a89 10

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

extend type Query {
  humans(listId: [String!]): [Human!]
  human(id: ObjID!): Human
}
Run Code Online (Sandbox Code Playgroud)

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

Query: {
  humans(root, {listId}, { Human }) {
    return Human.fillAllByListId(listId);
  },
  ...
},
Run Code Online (Sandbox Code Playgroud)

ID列表可以按如下方式传递: 传递ID列表


小智 7

您可以使用GraphQL 别名

{
    first: human(id: "1") {
        name
        height
    }
    second: human(id: "2") {
        name
        height
    }
}
Run Code Online (Sandbox Code Playgroud)