我对一个GraphQL查询有些困惑。
{
collectionByHandle(handle:"price") {
products(first: 16, sortKey:PRICE, query:"title:Bracelet"){
edges {
cursor
node {
title
}
}
}
}
}
该错误来自query
参数,该参数在“自定义”集合中不受支持,但在“智能”集合中。
查询:字符串
仅当集合是智能的时才使用此字段。如果集合是自定义的,则返回错误。支持的过滤器参数:
- 标题
- product_type
- 供应商
- 礼品卡
- created_at
- updated_at
因此,当我使用自定义集合时,会得到预期的错误结果:
{
"data": {
"collectionByHandle": null
},
"errors": [
{
"message": "Cannot filter by query if the collection is a custom collection.",
"locations": [
{
"line": 3,
"column": 5
}
],
"path": [
"collectionByHandle",
"products"
]
}
]
}
但是当我使用智能收藏夹时,我会得到Access Denied
{
"data": {
"collectionByHandle": null
},
"errors": [
{
"message": "access denied",
"locations": [
{
"line": 3,
"column": 5
}
],
"path": [
"collectionByHandle",
"products"
]
}
]
}
来自前端的错误消息是这样的:
“字段'产品'不接受参数'查询'”
因此,如果指定了查询参数仅适用于Smart Collections,并且确实将集合设置为智能对象,则我看不出任何原因导致此请求无法正常工作。
关于为什么我将collectionByHandle
与products
一起使用的原因,我需要按价格对产品进行排序,并且如果我不将其包含在集合中,则不允许按价格对产品进行排序。
以下是该问题的视频演示:https://streamable.com/sevtf
对问题的任何见解将不胜感激。
答案 0 :(得分:0)
如果要查询products
下的queryroot
连接,则可以使用query
参数:
{
products(first: 16, sortKey:PRICE, query:"title:Bracelet"){
edges {
cursor
node {
title
}
}
}
}
但是,如果您使用的是Collection
(就像上面的代码一样),则products
连接只有6个受支持的参数:{{1 }},after
,before
,first
,last
和reverse
但不是 { {1}}。
Shopify help page对此提供了更多信息。
答案 1 :(得分:0)
您使用了错误的API端点。
我假设您使用storeFront API,请尝试执行以下操作:/api/2019-10/graphql.json