【发布时间】:2017-03-31 08:51:57
【问题描述】:
我正在尝试查询具有 ID 数组的对象列表。类似于以下 SQL 查询的内容:
SELECT name FROM events WHERE id IN(1,2,3,...);
如何在 GraphQL 中实现这一点?
【问题讨论】:
标签: graphql graphql-js
我正在尝试查询具有 ID 数组的对象列表。类似于以下 SQL 查询的内容:
SELECT name FROM events WHERE id IN(1,2,3,...);
如何在 GraphQL 中实现这一点?
【问题讨论】:
标签: graphql graphql-js
您绝对可以使用一组值进行查询!以下是查询本身的样子:
{
events(containsId: [1,2,3]) {
...
}
}
类型看起来像:
const eventsType = new GraphQLObjectType({
name: 'events',
type: // your type definition for events,
args: {
containsId: new GraphQLList(GraphQLID)
},
...
});
如果你想参数化这个查询,下面是一个例子:
{
query: `
query events ($containsId: [Int]) {
events(containsId: $containsId) {
id
name
}
}
`,
variables: {
containsId: [1,2,3]
}
}
【讨论】:
在我的用例中,我是这样做的:
查询:
vehicleTypes: { name: ["Small", "Minivan"] }
输入:
vehicleTypes: VehicleTypesInput
然后像这样使用:
Input VehicleTypesInput {
name: [String]!
}
【讨论】:
我只是这样做:
query nameOfYourQuery {
allEvents(filter: { id: { in: [1,2,3] } }) {
nodes {
name
}
}
}
如果数组是一个变量,那么它看起来像这样(至少在 Gatsby 中):
query nameOfYourQuery($arrayOfID: [String]) {
allEvents(filter: { id: { in: $arrayOfID: [String] } }) {
nodes {
name
}
}
}