Как обойти ограничение на количество символов для позиции Shopify при создании варианта продукта?

Пожалуйста, будьте терпеливы, поскольку я не являюсь разработчиком Shopify, и созданный код изначально не был создан мной. Я работаю с клиентом, которому требуется создать один продукт с помощью безголового приложения Shopify, и этот продукт создает вариант, включающий позицию, описывающую конфигурацию продукта. У меня проблема в том, что значение позиции I Кажется, я прохожу слишком долго (не удалось найти документацию по ограничению количества символов в Shopify).

Чтобы представить визуальное представление, вот как выглядит оформление заказа («Параметры здесь» — это значение параметров позиции, которое сеет хаос, когда оно слишком длинное):

Вот где мой код не может создать продукт, если значение параметров позиции слишком велико:

const addProduct = async (req, res) => {
  const { variants } = req.body;
  console.info("Product create");
  const query = `mutation {
    productCreate(input: {
      bodyHtml: "Just another custom product",
      handle: "custom-product",
      productType: "Custom Products",
      title: "Custom Product",
      vendor: "Client",
      variants: ${JSON.stringify(variants).replace(/"([^"]+)":/g, "$1:")}
    }){
      product{
        id
        title
        variants (first: 50) {
          edges {
            node {
              id
              title
              price
              sku
            }
          }
        }
      }
    }
  }`;

  try {
    const response = await shopify.graphql(query);
    const published = await publishProduct(response.productCreate.product.id);
    const parsedResponse = cleanGraphQLResponse(response);

    return res.status(200).send({
      message: "Product created",
      product: { ...parsedResponse.productCreate.product, published },
    });
  } catch (error) {
    console.info(error);
    return res.status(501).send({ message: "Error", error });
  }
};

На внешнем интерфейсе информация отправляется следующим образом:

const createCheckout = () => {
    const report = obtainReport();
    let totalPrice = 0;
    let lineItemsConcat = '';
    report.map((item, index) => {
      const [title, value, price] = item;
      totalPrice = totalPrice + (+price); //unary operator
      lineItemsConcat = `${title}: ${value}; ${lineItemsConcat}`;
    });

    const lineItems = {
      title: lineItemsConcat,
      options: lineItemsConcat,
      price: totalPrice,
      sku: `Item-0`,
    };

    createShopifyProduct([lineItems]);
  };

Есть идеи, как мне преодолеть этот блокатор? Либо найдя способ передать всю информацию в одном значении параметров позиции, либо отобразив пользовательскую информацию при оформлении заказа Shopify.

Спасибо за ваше время!

🤔 А знаете ли вы, что...
JavaScript поддерживает объектно-ориентированное программирование.


80
1

Ответ:

Решено

Кажется, ограничение на количество символов для значения параметра составляет 255 символов. Мое довольно эффективное решение состояло в том, чтобы включить усеченную версию в оформление заказа и полную версию в электронное письмо с подтверждением заказа.

При создании заказа я включил примечание к полной позиции, а затем отредактировал шаблон Liquid для электронного письма с подтверждением заказа, включив где-то там переменную note.