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

Directus Flow问题:Run Script中modifiedPayload可用,后续操作未定义

Directus Flow中Run Script添加的modifiedPayload在后续操作中返回undefined

问题场景

在开发Directus Flow时,通过Run Script操作向data对象添加了modifiedPayload对象,该对象在Run Script内部已成功创建并打印,但后续的Log或Webhook操作中访问{{ modifiedPayload }}时却返回undefined。

Run Script代码

module.exports = async function (data) {
  // 创建时间戳
  const timestamp = new Date().toISOString();

  // 提取日期(YYYY-MM-DD)
  const date = timestamp.split('T')[0];

  // 提取时间(HH:MM:SS)
  const time = timestamp.split('T')[1].split('.')[0];

  // 创建包含额外字段的新对象
  const modifiedPayload = {
    ...data.$trigger.payload, // 展开原始payload
    timestamp,
    date,
    time,
    location: "Office A" // 可按需替换为动态逻辑
  };

  // 调试日志
  console.log("Modified Payload in Run Script:", modifiedPayload);

  // 返回修改后的data
  return {
    ...data, // 展开原始data
    modifiedPayload // 添加新属性
  };
};

后续操作配置

Run Script之后添加了Log操作,消息内容设置为:

Modified Payload: {{ modifiedPayload }}

但日志显示modifiedPayload为undefined。

Run Script执行后的Payload确认

查看Run Script输出的Payload,确认modifiedPayload已存在:

{
  "$trigger": {
    "event": "attendances.items.create",
    "payload": {
      "event_type": "check-in",
      "user_id": "51a12d76-b674-4018-96b6-da95dc5115e2"
    },
    "key": 90,
    "collection": "attendances"
  },
  "$last": null,
  "$accountability": {
    "role": "a846c34e-cb97-48e6-8e4f-87f92a570bfd",
    "user": "9e4032ca-4676-4c89-937e-77f3c80e3c2a",
    "roles": [
      "a846c34e-cb97-48e6-8e4f-87f92a570bfd"
    ],
    "admin": true,
    "app": true,
    "ip": "127.0.0.1",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
    "origin": "http://0.0.0.0:8055",
    "session": "81oeUm9_Sd5KKfmGazQZqFHPWHZaQ5d6FSW4HhWt39KhQ8XQx2HeIrqM7aai1vwg"
  },
  "$env": {},
  "event_type": null,
  "modifiedPayload": {
    "event_type": "check-in",
    "user_id": "51a12d76-b674-4018-96b6-da95dc5115e2",
    "timestamp": "2025-03-22T18:17:24.090Z",
    "date": "2025-03-22",
    "time": "18:17:24"
  }
}

已尝试的排查步骤

  • 验证Run Script已正确将modifiedPayload添加到返回的data对象中
  • 在Run Script后立即添加Log操作验证字段
  • 确认Flow触发事件为attendances.items.create
  • 检查用户角色对Flow和集合的访问权限

预期与实际行为

  • 预期:modifiedPayload可在后续操作中正常访问
  • 实际:后续操作中modifiedPayload显示为undefined

解决方案

Directus Flow中,每个步骤的输出结果默认会被存储在$last变量中,而非直接合并到全局顶级变量里。因此后续操作需要通过$last来引用Run Script返回的字段:

将Log操作的消息内容修改为:

Modified Payload: {{ $last.modifiedPayload }}

原理说明

Run Script的返回值会被Flow赋值给$last,后续步骤要访问上一步的输出,必须通过$last前缀。直接使用{{ modifiedPayload }}会去全局初始的data对象中查找,而初始对象里并没有这个字段,因此返回undefined。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:27:02