节点红色 - 遍历 UniFi API 数组数据
Node Red - Iterating through a UniFi API array data
我正在玩节点红色和 unifi 调色板。我查询了连接设备的 unifi 控制器,它返回了一个包含 22 个对象的数组。在该对象中,我有兴趣提取 mac 并将其作为单独的消息发送,以便我可以根据我感兴趣的 mac 列表进行检查。
我已经玩了几个小时了,我想出的最好的方法是使用 node.warn() 在调试器 window 中显示个人 mac .
var l = msg.payload[0].length;
for (var i = 0; i < l; i++) {
node.warn(msg.payload[0][i].mac);
}
看起来输出是一个二维数组(第一维只有 1 深。
如果您通过 split
节点的 2 个实例传递此输出,它将生成一个消息流,每条消息中都有一个设备,这应该使事情更容易处理。
它需要 2 个 split
个节点,因为它是一个二维数组。
Node-RED documentation 描述了如何 return 来自 Function 节点的多条消息。
您可以构建一个要发送的消息数组,然后 return。或者在循环中使用 node.send(...)
依次发送每个。
例如:
var l = msg.payload[0].length;
for (var i = 0; i < l; i++) {
node.send({
payload: msg.payload[0][i].mac
});
}
虽然功能节点允许您在 JavaScript 中编写所有内容,但也值得查看其他核心节点,了解它们如何帮助消除编写代码的需要。
您也可以通过使用一系列节点来获得相同的结果,例如:
- A 更改节点以将
msg.payload[0]
移动到 msg.payload
- Split 节点向 msg.payload
中保存的数组中的每个元素发送一条消息
- A 更改节点以将
msg.payload.mac
移动到 msg.payload
我正在玩节点红色和 unifi 调色板。我查询了连接设备的 unifi 控制器,它返回了一个包含 22 个对象的数组。在该对象中,我有兴趣提取 mac 并将其作为单独的消息发送,以便我可以根据我感兴趣的 mac 列表进行检查。
我已经玩了几个小时了,我想出的最好的方法是使用 node.warn() 在调试器 window 中显示个人 mac .
var l = msg.payload[0].length;
for (var i = 0; i < l; i++) {
node.warn(msg.payload[0][i].mac);
}
看起来输出是一个二维数组(第一维只有 1 深。
如果您通过 split
节点的 2 个实例传递此输出,它将生成一个消息流,每条消息中都有一个设备,这应该使事情更容易处理。
它需要 2 个 split
个节点,因为它是一个二维数组。
Node-RED documentation 描述了如何 return 来自 Function 节点的多条消息。
您可以构建一个要发送的消息数组,然后 return。或者在循环中使用 node.send(...)
依次发送每个。
例如:
var l = msg.payload[0].length;
for (var i = 0; i < l; i++) {
node.send({
payload: msg.payload[0][i].mac
});
}
虽然功能节点允许您在 JavaScript 中编写所有内容,但也值得查看其他核心节点,了解它们如何帮助消除编写代码的需要。
您也可以通过使用一系列节点来获得相同的结果,例如:
- A 更改节点以将
msg.payload[0]
移动到msg.payload
- Split 节点向 msg.payload 中保存的数组中的每个元素发送一条消息
- A 更改节点以将
msg.payload.mac
移动到msg.payload