Пожалуйста, будьте терпеливы, поскольку я не являюсь разработчиком 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 поддерживает объектно-ориентированное программирование.
Кажется, ограничение на количество символов для значения параметра составляет 255 символов. Мое довольно эффективное решение состояло в том, чтобы включить усеченную версию в оформление заказа и полную версию в электронное письмо с подтверждением заказа.
При создании заказа я включил примечание к полной позиции, а затем отредактировал шаблон Liquid для электронного письма с подтверждением заказа, включив где-то там переменную note
.