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

Node-RED拆分msg.payload对象遇异常:仅返回首个拆分结果

Node-RED拆分Payload仅输出首个消息的解决办法

问题根源

你的function节点默认只有1个输出端口,当返回消息数组时,Node-RED只会把数组第一个元素从唯一的输出端口发送出去,剩下的消息不会流出。

两种解决方式

方式1:扩展输出端口数量

  1. 打开function节点配置面板
  2. 在Outputs栏输入4
  3. 保存后重新部署,此时4个消息会分别从4个输出端口依次输出

方式2:用node.send()逐个发送

修改代码,放弃返回数组,改用node.send()发送每个消息,这样单个输出端口也能输出所有消息:

var payload = msg.payload;

var msgAddress = { payload: {} };
var msgUtetemp = { payload: {} };
var msgBorvarde = { payload: {} };
var msgTempElement = { payload: {} };

for (var key in payload) {
    if (payload.hasOwnProperty(key)) {
        if (key.endsWith('_address')) {
            msgAddress.payload[key] = payload[key];
        } else if (key.endsWith('_utetemp')) {
            msgUtetemp.payload[key] = payload[key];
        } else if (key.endsWith('_borvarde')) {
            msgBorvarde.payload[key] = payload[key];
        } else if (key.endsWith('_tempElement')) {
            msgTempElement.payload[key] = payload[key];
        }
    }
}

console.log("msgAddress:", msgAddress);
console.log("msgUtetemp:", msgUtetemp);
console.log("msgBorvarde:", msgBorvarde);
console.log("msgTempElement:", msgTempElement);

// 逐个发送所有消息
node.send(msgAddress);
node.send(msgUtetemp);
node.send(msgBorvarde);
node.send(msgTempElement);

return null;

额外说明

如果选方式1,数组元素和输出端口是一一对应的:数组第1个元素走端口1,第2个走端口2,以此类推。你可以根据后续节点的连接需求选对应的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:56:12