如何在node-red中的函数节点中接收两个输出值

时间:2018-01-23 13:13:41

标签: javascript node-red

在节点红色应用程序中,我使用exec节点获取mac地址,同时使用sq-lite数据库获取值。我需要获取mac数据库节点输出并从Get mac函数中的设备节点输出获取mac。

我尝试使用下面的代码来获取输出。

var databaseoutput=msg.payload;
var device_mac = msg.payload;
return msg;

enter image description here

2 个答案:

答案 0 :(得分:0)

每个Node-RED节点一次只处理一条消息,所以即使你将2个输入连接到函数节点的开头,它也会看到2个完全独立的消息,一个用于前面的流的每个分支。

有两种方法可以解决这个问题。

  1. 在函数节点之前使用join节点。配置连接节点以等待2条消息。然后,这将输出一条消息,其中包含存储在数组中的2条输入消息中的有效负载,然后您可以查询要查找的值。

  2. 使用主题来区分来自单独分支的2条消息,然后使用contextdocs)存储每个输入的最后一个值,然后当你有两个输入时,你可以进行所需的处理。

答案 1 :(得分:0)

Node-RED google group discussion ...

中提出并回答了同样的问题

我的建议是不要在流程中创建多个路径,必须在处理之前进行组合。将这两个函数链接到一个串行流中通常更容易和更安全 - 这避免了在等待生成其余信息时必须使用上下文来保存值。

首先尝试调用exec cmd - 将其连接到change节点,然后将“ msg.payload ”移动到其他位置,例如 msg。 mac - 将数据连接到db查询,该查询应将其输出放入msg.payload。输出msg现在应该在一个msg对象中包含msg.mac和msg.payload。