Запрос продуктов GraphQL Отказано в доступе - PullRequest
2 голосов
/ 02 апреля 2019

Я немного застрял с одним запросом 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

Поэтому, когда я использую коллекцию Custom, я получаю ожидаемый результат ошибки:

{
  "data": {
    "collectionByHandle": null
  },
  "errors": [
    {
      "message": "Cannot filter by query if the collection is a custom collection.",
      "locations": [
        {
          "line": 3,
          "column": 5
        }
      ],
      "path": [
        "collectionByHandle",
        "products"
      ]
    }
  ]
}

Но когда я использую коллекцию Smart, я получаю Access Denied

{
  "data": {
    "collectionByHandle": null
  },
  "errors": [
    {
      "message": "access denied",
      "locations": [
        {
          "line": 3,
          "column": 5
        }
      ],
      "path": [
        "collectionByHandle",
        "products"
      ]
    }
  ]
}

Сообщение об ошибке от внешнего интерфейса выглядит так:

"Поле 'products' не принимает аргумент 'query'"

Так что я не вижу причин, по которым этот запрос не работает должным образом, если указано, что параметр запроса работает только для Smart Collections и коллекция действительно настроена как интеллектуальная.

Что касается того, почему я использую collectionByHandle с products, мне нужно отсортировать товары по цене, а товары не позволяют сортировать по цене, если я не включу их в коллекцию.

Вот видео-демонстрация проблемы: https://streamable.com/sevtf

Любое понимание проблемы будет высоко оценено.

1 Ответ

0 голосов
/ 21 мая 2019

Если вы запрашиваете соединение products в queryroot, вы можете использовать параметр query:

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

Однако , если вы находитесь вCollection (как в приведенном выше коде), соединение products имеет только 6 поддерживаемых параметров: after, before, first, last, reverse и sortKey, но не query.

Страница справки Shopify предоставляет дополнительную информацию по этому вопросу.

...