为什么我的Shopify Storefront API GraphQL筛选查询返回集合全部商品?
问题原因及解决方案
- filters参数类型使用错误(最常见原因)
Shopify Storefront API的filters字段要求传入过滤规则数组,而非单个过滤对象。你当前的写法将单个productType过滤对象直接赋值给filters,不符合参数格式要求,导致过滤器未被正确识别,相当于未传过滤条件,因此返回了集合下的所有商品。
修正后的查询语句如下:
query ProductType { collectionByHandle(handle: "pants") { handle products(first: 10, filters: [ { productType: "pants" } ]) { edges { node { handle productType } } } } }
- API版本不支持过滤功能
2021-01及更高版本的Storefront API才正式支持collection商品过滤能力,如果你调用的API版本低于该版本,filters参数会被直接忽略。可在Shopify GraphiQL Explorer顶部的版本选择器切换到2021-01及以上的稳定版本后重新测试。 - 过滤属性未在后台启用
你需要在Shopify后台的「在线商店 > 导航 > 搜索和过滤」设置中,将productType启用为可用过滤选项,否则对应过滤规则不会生效。
内容的提问来源于stack exchange,提问作者William.D
相关产品推荐
相关产品推荐

