如何在 GraphQL 中以数组作为参数查询对象列表
How to query list of objects with array as an argument in GraphQL
我正在尝试查询具有 ID 数组的对象列表。类似于以下 SQL 查询:
SELECT name FROM events WHERE id IN(1,2,3,...);
如何在 GraphQL 中实现这一点?
你绝对可以用一个值数组来查询!下面是查询本身的样子:
{
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
}
}
}
我正在尝试查询具有 ID 数组的对象列表。类似于以下 SQL 查询:
SELECT name FROM events WHERE id IN(1,2,3,...);
如何在 GraphQL 中实现这一点?
你绝对可以用一个值数组来查询!下面是查询本身的样子:
{
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
}
}
}