Как обойти ограничение на количество символов для позиции 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.

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

Вы забываете включить данные, которые не подходят для вашего кода. Без этого трудно понять, где именно вы облажаетесь! Вставьте также образец продукта!

David Lazar 05.04.2024 15:38

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

NicolasJEngler 08.04.2024 00:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Другие вопросы по теме