Запрос на корзину в Shopify возвращает hasAnyTag false

Вопрос или проблема

У меня есть продукт с тегом = CL Og test. У меня есть метаполе в моем магазине, и при запросе оно возвращает следующее:

"node": {
"id": "gid://shopify/Metafield/32266534555929",
"key": "\"discountSpecs\"",
"value": "{\"selectedCollectionIds\":[\"gid://shopify/Collection/310827712556\"],\"tags\":[\"CL Og test\",\"VIP234234\"]}",
"namespace": "cldiscounts"
}

Затем я запрашиваю свою корзину так:

query RunInput($tags: [String!]) {
  cart {
    lines {
      id
      quantity
      merchandise {
        ... on ProductVariant {
          id
          product {
            handle
            hasAnyTag(tags: $tags)
          }
        }
        __typename
      }
    }
  }
}

hasAnyTags всегда возвращает false, и я не понимаю, почему я уверен, что у продукта есть этот тег. Чтобы вызвать этот тег в функции, я установил его в shopify.extensions.toml на

  [extensions.input.variables]
  namespace = "cldiscounts"
  key = "discountSpecs"

если я вручную устанавливаю
hasAnyTag(tags: “CL Og test”), то оно возвращает true. Есть идеи, почему не считывается тег в объекте json, который установлен?

Ответ или решение

Проблема, с которой вы столкнулись, заключается в том, что функция hasAnyTag не распознает передаваемые теги, когда они берутся из переменной $tags. Это может произойти по нескольким причинам:

  1. Форматирование переменной: Убедитесь, что вы правильно передаете массив тегов в переменной $tags. Ваша переменная должна быть передана в правильном формате и содержать те же значения, что и теги, присвоенные продукту. Например:

    {
      "tags": ["CL Og test"]
    }

    Попробуйте проверить, как вы передаете переменную $tags в запросе. Возможно, стоит проверить, действительно ли массив содержит строковые значения без лишних пробелов или ошибок.

  2. Использование кавычек и экранирования: Обратите внимание на то, как вы используете кавычки в значениях. Если тег содержит кавычки или специальные символы, это может привести к неправильной обработке строки. Убедитесь, что строка не содержит дополнительного экранирования.

  3. Проверка доступа к метаполям: Убедитесь, что объект метаполя действительно доступен на уровне, где осуществляется запрос. Возможно, метаполе с тегами не доступно для конкретного продукта в запрашиваемом контексте, и соответственно hasAnyTag не может выполнить проверку.

  4. Тестирование с фиксированными значениями: Если вы знаете, что при прямой передаче строки hasAnyTag(tags: "CL Og test") возвращает true, попробуйте выполнить запрос с другими тегами или непосредственно с тегами из метаполя, чтобы убедиться, что у вас есть доступ к нужной информации.

  5. Прослушивание изменений минимального уровня: Убедитесь, что если вы изменяете метаполе или теги, изменения отражаются в запросе. Иногда кэширование или неполные данные могут вызывать непредвиденные результаты.

Если вы перепроверили все вышеперечисленные пункты и проблема остается, возможно, имеет смысл создать новый запрос, который явно устанавливает переменную $tags и проверяет, возвращает ли она ожидаемый результат:

query {
  cart {
    lines {
      merchandise {
        ... on ProductVariant {
          product {
            handle
            hasAnyTag(tags: ["CL Og test"])
          }
        }
      }
    }
  }
}

Заяка выше поможет вам диагностировать, корректно ли работает функция с переданными данными.

Если все еще возникают трудности, я рекомендую обратиться в поддержку Shopify с полными деталями, так как проблемы могут быть связаны с конкретными настройками вашей витрины.

Оцените материал
Добавить комментарий

Капча загружается...