【问题标题】:GraphQL products query Access DeniedGraphQL 产品查询拒绝访问
【发布时间】:2019-08-23 11:01:18
【问题描述】:

我有点卡在一个 GraphQL 查询上。

{
  collectionByHandle(handle:"price") {
    products(first: 16, sortKey:PRICE, query:"title:Bracelet"){
      edges {
        cursor
        node {
          title
        }
      }
    }
  }
}

错误来自 query 参数,自定义集合不支持,但它是智能集合。

查询:字符串

该字段仅在集合智能时使用。如果集合是自定义的,则会返回错误。支持的过滤器参数:

  • 标题
  • product_type
  • 供应商
  • gift_card
  • 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"
      ]
    }
  ]
}

前端的错误信息是这样的:

“字段‘产品’不接受参数‘查询’”

因此,如果指定查询参数仅适用于智能集合并且集合确实设置为智能集合,我看不出此请求无法正常工作的任何原因。

至于为什么我使用collectionByHandleproducts 我需要按价格对产品进行排序,如果我不将它们包含在集合中,则产品不允许按价格排序。

这里也是该问题的视频演示:https://streamable.com/sevtf

对问题的任何见解将不胜感激。

【问题讨论】:

  • “商品不允许按价格排序”是什么意思?

标签: graphql shopify


【解决方案1】:

如果要查询queryroot下的products连接,可以使用query参数:

{
    products(first: 16, sortKey:PRICE, query:"title:Bracelet"){
        edges {
            cursor
            node {
                title
            }
        }
    }
}

但是,如果您在Collection 中(如上面代码中的情况),products 连接仅支持 6 个参数:afterbeforefirstlastreversesortKey 但不是 query

Shopify help page 提供了更多相关信息。

【讨论】:

  • 但是,如果我想过滤特定集合的产品怎么办?这只能通过query 完成。你能解决这个问题吗?
【解决方案2】:

您使用了错误的 API 端点。 我假设你使用 storeFront API,请试试这个:/api/2019-10/graphql.json

Document

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多