Shopify折扣GraphQL API:合并查询与标题搜索需求
Shopify折扣GraphQL查询优化问题解答
问题描述
现有两个分别用于获取自动折扣和代码折扣的Shopify GraphQL查询,想明确两个问题:
- 能否在单个查询中同时获取这两类折扣?
- 是否支持类似产品/集合查询中
products(first: 10, query: "title:*searched_text*")的方式,通过标题过滤折扣数据?
原有查询代码:
# 代码折扣查询 query_1 = ''' { codeDiscountNodes (first:10,query:"status:active"){ edges { node { id codeDiscount { __typename ... on DiscountCodeBxgy { status title } ... on DiscountCodeBasic { status title } } } } } } ''' # 自动折扣查询 query_2 = ''' { automaticDiscountNodes (first: 10) { edges { node { id automaticDiscount { __typename ... on DiscountAutomaticBxgy { status title } ... on DiscountAutomaticBasic { status title } } } } } } '''
解答
1. 可在单个查询中同时获取两类折扣
Shopify GraphQL API允许在单个请求中调用多个顶级字段,直接将两个查询的顶级节点合并即可。合并后的查询示例如下:
combined_query = ''' { # 代码折扣部分 codeDiscountNodes(first: 10, query:"status:active") { edges { node { id codeDiscount { __typename ... on DiscountCodeBxgy { status title } ... on DiscountCodeBasic { status title } } } } } # 自动折扣部分 automaticDiscountNodes(first: 10) { edges { node { id automaticDiscount { __typename ... on DiscountAutomaticBxgy { status title } ... on DiscountAutomaticBasic { status title } } } } } } '''
执行该查询后,返回结果会包含codeDiscountNodes和automaticDiscountNodes两个字段,分别对应两类折扣的数据。
2. 标题过滤的支持情况
代码折扣(codeDiscountNodes):支持通过
query参数按标题过滤,语法和产品查询一致,支持通配符*。例如要搜索标题包含"summer"的激活状态代码折扣,写法如下:codeDiscountNodes(first: 10, query:"status:active AND title:*summer*") { # 字段结构保持不变 }还可以组合其他过滤条件,比如折扣类型、创建时间等。
自动折扣(automaticDiscountNodes):目前Shopify GraphQL API的
automaticDiscountNodes字段不支持query参数过滤,无法在查询阶段直接按标题筛选。需要先获取所有自动折扣数据,再在客户端代码中对title字段做匹配过滤。
内容的提问来源于stack exchange,提问作者Sandeep KS
相关产品推荐
相关产品推荐

