向函数中的数组添加新项(Node-Red)

时间:2017-01-26 14:10:06

标签: node-red

我正在尝试构建一个从交换节点获取此输入的函数节点:

主题:"报警名称" 有效载荷:1

我正在尝试在将主题输入推送到数组的函数节点中创建一个数组。到目前为止,这是我在函数节点中的代码:

context.outputAlarms = [];
context.outputAlarms.push(msg.topic);
msg.payload = context.outputAlarms;
return msg; 

这是调试节点输出: 用于RECV SYS AUTO STP的C-1A SEL:msg:对象 {"有效载荷":[" C-1A SEL用于RECV SYS AUTO STP" ],"主题":" C-1A SEL用于RECV SYS AUTO STP"," _msgid":" bbe3efc0.3816a" }

我正在使用" context"因为根据我的理解,它是一个在某个节点中存储数据的模块。我相信我的问题是阵列没有添加新项目,它会覆盖它们。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

每次运行函数时,第一行都会用空数组覆盖数组。您需要测试它是否已经存在,如果没有则仅将其设置为空。

这样的事情应该有效:

if (!context.outputAlarms) {
   context.outputAlarms = [];
}
context.outputAlarms.push(msg.topic);
msg.payload = context.outputAlarms;
return msg; 

另请阅读有关使用上下文的文档,您使用的示例是旧的已弃用的方法来访问它。文档为here