在函数内向数组添加新项(Node-Red)
Adding new items to an array within a function (Node-Red)
我正在尝试构建一个从切换节点获取此输入的功能节点:
主题:"Name of Alarm"
有效负载:1
我正在尝试在将主题输入推送到数组中的函数节点内创建一个数组。到目前为止,这是我的功能节点中的代码:
context.outputAlarms = [];
context.outputAlarms.push(msg.topic);
msg.payload = context.outputAlarms;
return msg;
这是调试节点输出:
C-1A SEL FOR RECV SYS AUTO STP : msg : Object
{ "payload": [ "C-1A SEL FOR RECV SYS AUTO STP" ], "topic": "C-1A SEL FOR RECV SYS AUTO STP", "_msgid": "bbe3efc0.3816a" }
我正在使用 "context",因为据我了解,它是一个在特定节点中存储数据的模块。我相信我的问题是数组没有添加新项目,而是覆盖了它们。谁能指出我正确的方向?
你的第一行是每次函数运行时用空数组覆盖数组。您需要测试它是否已经存在,如果不存在则只将其设置为空。
像这样的东西应该可以工作:
if (!context.outputAlarms) {
context.outputAlarms = [];
}
context.outputAlarms.push(msg.topic);
msg.payload = context.outputAlarms;
return msg;
另请阅读有关使用上下文的文档,您使用的示例是访问它的旧的已弃用方法。文档是 here
我正在尝试构建一个从切换节点获取此输入的功能节点:
主题:"Name of Alarm" 有效负载:1
我正在尝试在将主题输入推送到数组中的函数节点内创建一个数组。到目前为止,这是我的功能节点中的代码:
context.outputAlarms = [];
context.outputAlarms.push(msg.topic);
msg.payload = context.outputAlarms;
return msg;
这是调试节点输出: C-1A SEL FOR RECV SYS AUTO STP : msg : Object { "payload": [ "C-1A SEL FOR RECV SYS AUTO STP" ], "topic": "C-1A SEL FOR RECV SYS AUTO STP", "_msgid": "bbe3efc0.3816a" }
我正在使用 "context",因为据我了解,它是一个在特定节点中存储数据的模块。我相信我的问题是数组没有添加新项目,而是覆盖了它们。谁能指出我正确的方向?
你的第一行是每次函数运行时用空数组覆盖数组。您需要测试它是否已经存在,如果不存在则只将其设置为空。
像这样的东西应该可以工作:
if (!context.outputAlarms) {
context.outputAlarms = [];
}
context.outputAlarms.push(msg.topic);
msg.payload = context.outputAlarms;
return msg;
另请阅读有关使用上下文的文档,您使用的示例是访问它的旧的已弃用方法。文档是 here