节点红色分割msg.payload

问题描述 投票:0回答:1

您好,当我想将 msg.payload 对象拆分为 4 个单独的有效负载时,我遇到了问题。

当我运行我的函数时,我只得到了第一个

Log1

Log2

功能节点




//
var payload = msg.payload;

// Create separate messages for each key
var msgAddress = { payload: {} };
var msgUtetemp = { payload: {} };
var msgBorvarde = { payload: {} };
var msgTempElement = { payload: {} };

// Loop through the payload keys and assign them to the appropriate message
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];
        }
    }
}
// Log the separated payloads
console.log("msgAddress:", msgAddress);
console.log("msgUtetemp:", msgUtetemp);
console.log("msgBorvarde:", msgBorvarde);
console.log("msgTempElement:", msgTempElement);


// Return an array containing the separated payloads
return [msgAddress, msgUtetemp, msgBorvarde, msgTempElement]

但是当我运行代码时,我只得到消息中的第一个 msg.payload“msgAddress:”。

msgAdress

debug我正在记录完整的 msg.object,

javascript node-red
1个回答
0
投票

从函数节点返回消息数组时,您需要将其设为二维数组以从单个输出返回所有消息。

例如

return [[msgAddress, msgUtetemp, msgBorvarde, msgTempElement]]

这是因为第一级数组是要输出的端口,我猜你只配置了 1 个输出端口,因此所有其他端口都被丢弃。

文档:https://nodered.org/docs/user-guide/writing-functions#multiple-messages

© www.soinside.com 2019 - 2024. All rights reserved.