Node-RED:在哪里可以找到 RED.nodes.createNode/getNode/eachNode/ 的文档

And*_*zek 5 node-red

我可能是瞎子,但我找不到在许多节点实现中看到的函数的文档,因为有:

  • RED.nodes.createNode()
  • RED.nodes.getNode()
  • RED.nodes.eachNode()
  • RED.nodes.originaFlow()

包括有关编辑器中显示的节点以及运行时实际使用的节点的重要详细信息。

我发现的一切似乎都已经过时了。

因此:我在哪里可以找到上述功能的最新文档?

And*_*zek 3

只是为了不让这个问题得不到解答:

这个问题和类似问题(涉及 Node-RED 的内部)的答案可以在Nick O'Leary 为 Node-RED 论坛撰写的一些帖子中找到

以下只是那里的副本:

以下所有内容仅适用于编辑器。这在运行时中是不等价的。

按名字查找

没有直接的方法可以通过“名称”查找任何内容 - 名称是可选字段,可以留空。它们也不是独一无二的。在幕后,您应该使用 id 字段来引用其他节点。

let node = RED.nodes.node(id);
Run Code Online (Sandbox Code Playgroud)

要获取名称属性设置为特定值的任何节点:

let results = [];
RED.nodes.eachNode(function(node) {
   if (node.name === "HELLO") {
      results.push(node);
   }
});
Run Code Online (Sandbox Code Playgroud)

(如果您深入研究代码,您会看到RED.nodes.filterNodes存在 - 目前仅过滤ztype而不是任何其他属性...但它足以更新以处理任何属性...我们从来没有需要过它)

以上适用于常规流节点。要对配置节点或流执行相同的操作,您可以分别使用eachConfig()eachWorkspace()执行相同的操作。

查找给定节点的连接节点

let node = RED.nodes.node(nodeId);
let allConnectedNodes = RED.nodes.getAllFlowNodes(node)
Run Code Online (Sandbox Code Playgroud)

如果您只想要该节点“之前”或“之后”的节点,您可以执行以下操作:

let allUpstreamNodes = RED.nodes.getAllUpstreamNodes(node);
let getAllDownstreamNodes = RED.nodes.getAllDownstreamNodes(node) 
Run Code Online (Sandbox Code Playgroud)

其他信息可以在另一篇文章中找到,该文章也复制在下面(第一行代码说明了如何通过节点的内部 id 访问节点):

如何查找给定节点所在的选项卡的名称

let node = RED.nodes.node(id)

let tab = RED.nodes.workspace(node.z) || RED.nodes.subflow(node.z);
Run Code Online (Sandbox Code Playgroud)