You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Directus流程中更新多个条目并为每个条目设置不同值?

Directus数组批量更新条目不生效的解决方案

问题原因

Directus默认的「Update Item」操作仅支持单个对象格式的负载,无法直接解析数组形式的批量更新请求,所以你提交的数组负载会被忽略,导致目标字段未更新。

两种可行解决方案

方案1:使用「Run Script」操作实现批量更新

替换原有的「Update Item」为「Run Script」操作,编写简单脚本循环数组内的每个条目,调用Directus内置SDK完成更新:

// 遍历负载数组,逐个更新invoice条目
for (const item of $payload) {
  await directus.items('invoice').update(item.id, { temp: item.temp });
}

配置说明:

  • 确保脚本的「Payload」设置为你的数组数据(比如直接引用触发器输出或上游操作的结果)
  • 脚本会自动处理数组中的每个对象,按id匹配并更新对应字段

方案2:使用「Loop」操作实现无代码批量更新

如果不想写代码,可以通过流程的循环组件拆分批量操作:

  • 添加「Loop」操作,设置「Loop Through」为你的数组负载(例如{{ $trigger.payload }})
  • 在「Loop」内部添加「Update Item」操作:
    • 集合选择invoice
    • 「Item ID」填写{{ $loop.item.id }}(引用当前循环条目的id)
    • 「temp」字段值填写{{ $loop.item.temp }}(引用当前循环条目的temp值)

这样每次循环会单独更新一个条目,实现批量效果。

内容的提问来源于stack exchange,提问作者gremo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:12:10