Directus更新记录时如何在Payload中传递所有字段值
在Directus更新记录时获取完整字段Payload的方案
方法一:用流程中的「Fetch Data」操作
- 在现有更新触发流程的后面,添加一个Fetch Data操作
- 配置该操作:
- 选择你正在更新的目标集合
- 筛选条件设置为
id等于$trigger.payload.id(也就是当前被更新记录的ID) - 字段选择里勾选所有需要的字段(包括用户ID),或者直接选「All Fields」
- 后续发送通知的步骤,就可以调用
$steps.fetch_data.data[0].user_id这类变量来获取完整记录里的字段值
方法二:用自定义Hook代码实现
如果需要更灵活的控制,可以写一个自定义钩子绑定到更新事件:
module.exports = async function({ items }, { services, schema }) { const { ItemsService } = services; const collectionService = new ItemsService('你的集合名称', { schema }); // 通过ID读取完整记录 const fullRecord = await collectionService.readOne(items[0].id); // 这里编写你的通知逻辑,比如使用fullRecord里的user_id // 示例:调用通知服务发送消息给对应的用户 // await sendNotification(fullRecord.user_id, '状态已更新'); };
- 将这个钩子绑定到
items.update事件上,更新触发后就能拿到完整记录数据
内容的提问来源于stack exchange,提问作者Champak Chopda
相关产品推荐
相关产品推荐

