我会尽量保持简短。基本上我的网站上有一个非常简单的“增加”按钮数量。由于用户可以将具有不同订单项属性的多个相同变体添加到购物车,因此我必须开始使用“item.key”,它将具有不同订单项的每个变体显示为购物车中唯一的。现在,一个简单的 JSON 可以很好地更新购物车中的数量(即使购物车中有多个相同的变体):
var data = JSON.stringify({
"quantity": qty,
"id": itemkey,
"sections": sectionsToRender,
"sections_url": sections_url
});
但是当库存不足时就会出现问题。例如,您有 2 个相同的变体,但在购物车中添加了不同的属性。购物车中总共添加了 3 件,库存也为 3 件。您尝试添加第 4 个,它返回 422,但它仍然更新您尝试增加的项目,同时删除共享相同变体 id 但完全不同 item.key 的另一个项目。
我无法理解这一点,它应该只影响您正在更新的具有 item.key 的那个,而不是另一个。
我也按照 Shopify 的建议尝试使用“line”(而不是 item.key),但似乎存在相同的问题。再次强调一下,只要有足够的库存并且用户不超过库存量,就可以正常工作。
我通过首先将库存存入 JS 来解决这个问题。在允许客户更改数量的过程中,如果库存将超出,我会阻止在 Shopify 上更新数量的调用。这使得这个问题你还没有发生。