NodeRED函数节点为何仅返回单个值?如何实现多值返回?
Node-RED Function节点同时返回多个输出的解决方法
问题核心
你的代码逻辑本身没问题,但Function节点默认只有1个输出端子,所以返回数组时只会输出第一个元素,逗号表达式则是取最后一个值返回。要同时输出两个值,需要两步操作:
1. 给Function节点添加第二个输出端子
在Node-RED编辑器中:
- 双击打开你的Function节点
- 在节点配置面板右侧找到「Outputs」选项,把数值改成2
- 点击「Done」保存配置
2. 代码优化(可选,更严谨)
原代码里的if(left || right)判断没有实际作用,因为left和right都是对象类型,永远为true。如果需要处理readResults元素可能不存在的情况,可以调整代码:
var left = msg.payload.readResults[0] ? { payload : msg.payload.readResults[0].v } : null; var right = msg.payload.readResults[1] ? { payload : msg.payload.readResults[1].v } : null; node.warn(left); node.warn(right); // 返回数组对应2个输出端子,null会跳过对应输出 return [left, right];
原理说明
Node-RED的Function节点中,返回数组时:
- 数组第1个元素对应节点第1个输出端子
- 数组第2个元素对应节点第2个输出端子
- 若某个元素为
null或undefined,对应的输出端子不会发送消息
配置完成后,两个输出端子就能分别拿到left和right的内容了。
内容的提问来源于stack exchange,提问作者Glenn94
相关产品推荐
相关产品推荐

