每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117
已解决 提问于 4 天前

Flow 里改了商品又触发 Flow,跑出一堆重复记录

2 个回答 2,140 次浏览 应用与扩展 最后活跃 4 天前
18

建了个流程:商品库存低于 5 就改商品标签为「低库存」,结果后台日志刷了几百条,标签反复被加又被别的流程删掉。

陈
陈工提问者
Shopify 认证开发者 · 专注主题与 Liquid
4 天前提问 · 已收到 2 个回答

2 个回答

已采纳 · 提问者确认解决
78

Flow 的触发是「事件发生」,不是「字段变了」。你的动作只要修改了同一个对象,就会产生新的事件,流程再被触发一次——这是设计特性,不是 bug,必须靠条件把它掐断。

1处理顺序

  1. 在流程开头加「当前状态」判断:只有标签不含「低库存」时才执行,已经打过的直接结束。这是最有效的一道闸。
  2. 用独立的标记字段而不是业务标签做幂等,比如给商品加一个 metafield flow_lock,动作里先写这个锁定值,再改业务字段。
  3. 把「判断」和「执行」拆成两个流程:判断流程只负责发内部提醒,执行流程由人工或定时触发,避免互相触发。
  4. 清理脏数据:用 Flow 的批量运行或 GraphQL 按标签筛出被打乱的商品,先导出再批量修正,不要直接全店跑脚本。
  5. 上线前用一条测试商品验证:连续运行 10 分钟,看运行记录是否只有 1 条。
验收:触发一次后运行记录只有 1 条,商品标签不再反复变化,日志里没有同一商品的循环记录。
风 风格技术团队 · Shopify 官方合作伙伴 · 11 年建站经验 · 4 天前
8
同类问题也会出现在 webhook 里:自己订阅 products/update 又在处理时回写商品,端点会被自己的请求打爆。幂等键 + 版本号是通用解法。
泽 阿泽 · 前端工程师 · Hydrogen / Storefront API · 4 天前

你的处理方式是什么?

写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。

描述你遇到的现象、店铺环境(主题 / 套餐 / 应用)、已经试过哪些操作……
我要单独提问 工作日 10 分钟内回复,可直接加微信 fenggejishu