在节点红色应用程序中,我使用exec节点获取mac地址,同时使用sq-lite数据库获取值。我需要获取mac数据库节点输出并从Get mac函数中的设备节点输出获取mac。
我尝试使用下面的代码来获取输出。
var databaseoutput=msg.payload;
var device_mac = msg.payload;
return msg;
答案 0 :(得分:0)
每个Node-RED节点一次只处理一条消息,所以即使你将2个输入连接到函数节点的开头,它也会看到2个完全独立的消息,一个用于前面的流的每个分支。
有两种方法可以解决这个问题。
在函数节点之前使用join节点。配置连接节点以等待2条消息。然后,这将输出一条消息,其中包含存储在数组中的2条输入消息中的有效负载,然后您可以查询要查找的值。
使用主题来区分来自单独分支的2条消息,然后使用context
(docs)存储每个输入的最后一个值,然后当你有两个输入时,你可以进行所需的处理。
答案 1 :(得分:0)
在Node-RED google group discussion ...
中提出并回答了同样的问题我的建议是不要在流程中创建多个路径,必须在处理之前进行组合。将这两个函数链接到一个串行流中通常更容易和更安全 - 这避免了在等待生成其余信息时必须使用上下文来保存值。
首先尝试调用exec
cmd - 将其连接到change
节点,然后将“ msg.payload ”移动到其他位置,例如 msg。 mac - 将数据连接到db查询,该查询应将其输出放入msg.payload。输出msg现在应该在一个msg对象中包含msg.mac和msg.payload。