我正在尝试构建一个从交换节点获取此输入的函数节点:
主题:"报警名称" 有效载荷: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"因为根据我的理解,它是一个在某个节点中存储数据的模块。我相信我的问题是阵列没有添加新项目,它会覆盖它们。有人能指出我正确的方向吗?
答案 0 :(得分:1)
每次运行函数时,第一行都会用空数组覆盖数组。您需要测试它是否已经存在,如果没有则仅将其设置为空。
这样的事情应该有效:
if (!context.outputAlarms) {
context.outputAlarms = [];
}
context.outputAlarms.push(msg.topic);
msg.payload = context.outputAlarms;
return msg;
另请阅读有关使用上下文的文档,您使用的示例是旧的已弃用的方法来访问它。文档为here