Node-RED:如何遍历编辑器中的所有节点
Node-RED: how to iterate over all nodes in the editor
如何遍历编辑器中的所有节点(从输入元素事件处理程序中)?
(我想找到一个名称与当前输入匹配的节点)
为了不让这个问题悬而未决:
可以在 some postings written by Nick O'Leary for the Node-RED forum
中找到此问题和类似问题(处理 Node-RED 的内部结构)的答案
以下是那里的副本:
以下内容仅适用于编辑器。这在运行时是不等价的。
按名称查找
无法通过 'name' 直接找到任何内容 - 名称是可选字段,可以留空。它们也不是唯一的。在幕后,您应该使用 id 字段来引用其他节点。
let node = RED.nodes.node(id);
要获取名称 属性 被设置为特定值的任何节点:
let results = [];
RED.nodes.eachNode(function(node) {
if (node.name === "HELLO") {
results.push(node);
}
});
(如果你仔细研究代码,你会发现 RED.nodes.filterNodes
存在 - 目前只过滤 z
和 type
而不是任何其他 属性。 .. 但它足以更新以处理任何 属性... 我们从来不需要它)
以上适用于常规流节点。要对配置节点或流执行相同的操作,您将执行相同的操作,但分别使用 eachConfig()
和 eachWorkspace()
。
查找给定节点的连接节点
let node = RED.nodes.node(nodeId);
let allConnectedNodes = RED.nodes.getAllFlowNodes(node)
如果你只想要 'before' 或 'after' 这个节点,你可以这样做:
let allUpstreamNodes = RED.nodes.getAllUpstreamNodes(node);
let getAllDownstreamNodes = RED.nodes.getAllDownstreamNodes(node)
如何遍历编辑器中的所有节点(从输入元素事件处理程序中)?
(我想找到一个名称与当前输入匹配的节点)
为了不让这个问题悬而未决:
可以在 some postings written by Nick O'Leary for the Node-RED forum
中找到此问题和类似问题(处理 Node-RED 的内部结构)的答案以下是那里的副本:
以下内容仅适用于编辑器。这在运行时是不等价的。
按名称查找
无法通过 'name' 直接找到任何内容 - 名称是可选字段,可以留空。它们也不是唯一的。在幕后,您应该使用 id 字段来引用其他节点。
let node = RED.nodes.node(id);
要获取名称 属性 被设置为特定值的任何节点:
let results = [];
RED.nodes.eachNode(function(node) {
if (node.name === "HELLO") {
results.push(node);
}
});
(如果你仔细研究代码,你会发现 RED.nodes.filterNodes
存在 - 目前只过滤 z
和 type
而不是任何其他 属性。 .. 但它足以更新以处理任何 属性... 我们从来不需要它)
以上适用于常规流节点。要对配置节点或流执行相同的操作,您将执行相同的操作,但分别使用 eachConfig()
和 eachWorkspace()
。
查找给定节点的连接节点
let node = RED.nodes.node(nodeId);
let allConnectedNodes = RED.nodes.getAllFlowNodes(node)
如果你只想要 'before' 或 'after' 这个节点,你可以这样做:
let allUpstreamNodes = RED.nodes.getAllUpstreamNodes(node);
let getAllDownstreamNodes = RED.nodes.getAllDownstreamNodes(node)