Node-RED 如何遍历编辑器内全部节点以查找名称匹配的节点
Node-RED 编辑器节点遍历搜索实现方案
Node-RED 编辑器全局暴露了RED核心对象,直接调用其提供的节点API即可完成需求,具体步骤如下:
- 在input元素的输入事件回调中先获取用户输入的关键字,做非空判断避免无意义遍历
- 调用
RED.nodes.eachNode()方法遍历所有编辑器内的普通节点,该方法接收一个回调作为入参,每遍历到一个节点就会将节点实例传入回调 - 在回调中判断节点
name属性是否与输入内容匹配,将符合要求的节点存入结果数组即可
完整代码示例
// 替换为你实际使用的input元素选择器 document.querySelector('#your-input-id').addEventListener('input', function(e) { const searchKey = e.target.value.trim(); const matchedNodes = []; // 空输入直接终止逻辑 if (!searchKey) { // 此处可添加清空搜索结果的自定义逻辑 return; } // 遍历所有工作区节点 RED.nodes.eachNode(node => { // 仅匹配有名称的节点,忽略无名称节点 if (node.name && node.name.includes(searchKey)) { matchedNodes.push({ nodeId: node.id, nodeName: node.name, nodeType: node.type, workspaceId: node.z }); } }); // 此处可添加自定义的结果处理逻辑,比如渲染匹配列表、高亮节点等 console.log('匹配节点结果:', matchedNodes); });
补充说明
如果你需要同时匹配子流、分组节点,可额外调用
RED.nodes.eachSubflow()、RED.nodes.eachGroup()方法遍历对应类型的节点,用法和eachNode完全一致。
如果需要不区分大小写匹配,可将node.name和searchKey都转为小写/大写后再做匹配判断。
内容的提问来源于stack exchange,提问作者Andreas Rozek
相关产品推荐
相关产品推荐

