Far*_*eal 8 graphql graphql-js gatsby
我想在 GraphQL 查询变量中使用数组,以便我可以通过 Gatsby 的单个查询获取多个产品的数据,但目前我收到错误。
我的 graphQL 查询如下所示:
query ($id: [String!]) {
shopifyProduct(handle: {eq: $id}) {
handle
id
title
handle
productType
shopifyId
}
}
Run Code Online (Sandbox Code Playgroud)
我的查询变量如下所示:
{
"id": ["liner-jacket", "pocket-t-shirt"]
}
Run Code Online (Sandbox Code Playgroud)
所需的响应将是(类似于):
{
"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="
}
}
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*den 12
GraphQL 支持一种特殊的 List 类型,它表示特定类型的数组。例如,[String]是 类型的列表String。尽管[String]类型是换行的 String,但在 GraphQL 中它被认为是一种独立的、不同的类型String。换句话说,你不能使用[String]where Stringis Expected,也不能使用Stringwhere [String]is Expected。
参数(如handle)或输入对象字段(如eq)仅具有单一 GraphQL 类型。如果变量用作参数的值,则其类型必须与该参数的类型匹配。它似乎eq具有类型String!(非空字符串),因此您只能向其传递单个String而不是列表。
是否存在基于值数组进行查询的方法取决于服务器实现。某些模式支持一种方法来执行此操作(例如,eq可能有一个in接受列表的字段,而不是 )。然而,这是特定于模式的。查看您正在使用的服务器/框架/库的文档,或使用可用的 GraphiQL 或 GraphQL Playground 界面探索架构。
| 归档时间: |
|
| 查看次数: |
13025 次 |
| 最近记录: |