如何在 GraphQL 查询变量中使用数组
How to use an array inside a GraphQL Query Variable
我想在 GraphQL 查询变量中使用一个数组,这样我就可以使用 Gatsby 从单个查询中获取多个产品的数据,但是目前我遇到了错误。
我的 graphQL 查询如下所示:
query ($id: [String!]) {
shopifyProduct(handle: {eq: $id}) {
handle
id
title
handle
productType
shopifyId
}
}
我的查询变量如下所示:
{
"id": ["liner-jacket", "pocket-t-shirt"]
}
所需的响应将是(类似于):
{
"data": {
"shopifyProduct": {
"handle": "liner-jacket",
"id": "Shopify__Product__hopbjidjoqjndadnawdawda123123=",
"title": "Liner Jacket",
"productType": "jacket",
"shopifyId": "hopbjidjoqjndadnawdawda123123="
},
"shopifyProduct": {
"handle": "pocket-t-shirt",
"id": "Shopify__Product__iajwdoiajdoadjwaowda4023123=",
"title": "Pocket T-Shirt",
"productType": "t-shirt",
"shopifyId": "iajwdoiajdoadjwaowda4023123="
}
}
}
GraphQL 支持表示特定类型数组的特殊列表类型。例如,[String]
是 String
类型的列表。即使 [String]
类型 wraps String
,在 GraphQL 中它被认为是 separate,distinct 输入 String
。换句话说,您不能在需要 String
的地方使用 [String]
,也不能在需要 [String]
的地方使用 String
。
一个参数(如 handle
)或输入对象字段(如 eq
)只有一个 GraphQL 类型。如果变量用作参数的值,则其类型必须与该参数的类型相匹配。看起来 eq
的类型是 String!
(一个非空字符串),所以你只能传递一个 String
,而不是一个列表。
是否存在基于值数组进行查询的方法取决于服务器实现。一些模式支持一种方法来做到这一点(例如,而不是 eq
,可能有一个 in
字段接受一个列表)。但是,这是特定于模式的。查看您正在使用的 server/framework/library 的文档,或使用可用的 GraphiQL 或 GraphQL Playground 界面探索架构。
我想在 GraphQL 查询变量中使用一个数组,这样我就可以使用 Gatsby 从单个查询中获取多个产品的数据,但是目前我遇到了错误。
我的 graphQL 查询如下所示:
query ($id: [String!]) {
shopifyProduct(handle: {eq: $id}) {
handle
id
title
handle
productType
shopifyId
}
}
我的查询变量如下所示:
{
"id": ["liner-jacket", "pocket-t-shirt"]
}
所需的响应将是(类似于):
{
"data": {
"shopifyProduct": {
"handle": "liner-jacket",
"id": "Shopify__Product__hopbjidjoqjndadnawdawda123123=",
"title": "Liner Jacket",
"productType": "jacket",
"shopifyId": "hopbjidjoqjndadnawdawda123123="
},
"shopifyProduct": {
"handle": "pocket-t-shirt",
"id": "Shopify__Product__iajwdoiajdoadjwaowda4023123=",
"title": "Pocket T-Shirt",
"productType": "t-shirt",
"shopifyId": "iajwdoiajdoadjwaowda4023123="
}
}
}
GraphQL 支持表示特定类型数组的特殊列表类型。例如,[String]
是 String
类型的列表。即使 [String]
类型 wraps String
,在 GraphQL 中它被认为是 separate,distinct 输入 String
。换句话说,您不能在需要 String
的地方使用 [String]
,也不能在需要 [String]
的地方使用 String
。
一个参数(如 handle
)或输入对象字段(如 eq
)只有一个 GraphQL 类型。如果变量用作参数的值,则其类型必须与该参数的类型相匹配。看起来 eq
的类型是 String!
(一个非空字符串),所以你只能传递一个 String
,而不是一个列表。
是否存在基于值数组进行查询的方法取决于服务器实现。一些模式支持一种方法来做到这一点(例如,而不是 eq
,可能有一个 in
字段接受一个列表)。但是,这是特定于模式的。查看您正在使用的 server/framework/library 的文档,或使用可用的 GraphiQL 或 GraphQL Playground 界面探索架构。