Node-RED基础节点探秘:Change 节点的使用

随笔2个月前发布 小山竹
50 0 0

Node-RED基础节点探秘:Change 节点的使用

当涉及到在Node-RED中实现灵活的消息转换、修改和删除时,Change节点成为了一个强大而关键的工具。在这篇文章中,我们将深入探讨Change节点的作用、配置选项,带您逐步了解如何优雅地使用这一节点来定制您的Node-RED流。

Change节点:消息的变换术

当需要修改Node-RED流程中的消息时,Change节点成为不可或缺的工具。它为我们提供了设定值、替换值、删除和转移等丰富的功能,使得我们能够灵活地调整前面节点传递的消息,以满足后续节点的特定需求。通过Change节点,我们能够轻松地定制和优化消息流,确保信息在流程中传递时达到最佳状态。

了解消息流

为了更好的了解消息是如何在流程中进行传递的,我们先放置一个Inject节点,并设置payload为”Hello World!”,如下图所示:

Node-RED基础节点探秘:Change 节点的使用

再放置一个debug节点,并设置输出的内容为”与调试输出相同”,以输出整个消息的内容,如下图所示:

Node-RED基础节点探秘:Change 节点的使用

当我们点击inject节点左侧的按钮时消息将流经我们的流程,并在调试窗口中输出消息的内容,可以看到输出的内容为一个JSON对象的结构,包含了payload,topic和_msgid这三个属性,如下图所示:

Node-RED基础节点探秘:Change 节点的使用

change节点功能

1. 设置值(Set)

设置值可以实现对消息的现有某个属性的值进行设置、修改和复制,如下图所示:

Node-RED基础节点探秘:Change 节点的使用

可以看到流程执行后payload属性被修改,同时添加了一个新的属性value并将payload属性复制给了topic属性,如下图所示:

Node-RED基础节点探秘:Change 节点的使用

对值进行深拷贝

当设置值时,如果所设置的值也是消息的某个属性,并且未勾选”对值进行深拷贝”选项时,若该属性为一个对象,那么这两个属性将共享同一个对象引用。这可能导致在修改其中一个属性时,另一个属性也会同时改变。若您不希望发生这种情况,建议勾选该选项。这样,在设置值时,原对象将会被深度复制,创建一个新的副本,从而确保两个属性的修改不会相互影响。这一选择提供了更灵活的数据管理方式,避免了潜在的引用传递问题。

2. 替换值(Change)

在使用Change节点进行替换值时,节点提供了一项关键功能:能够根据特定条件检查属性中是否包含目标内容,并随后执行替换操作。如下图所示:

Node-RED基础节点探秘:Change 节点的使用

3. 删除(Delete)

删除的功能非常简单,可以将消息的某个属性进行删除,如下图所示:

Node-RED基础节点探秘:Change 节点的使用

4. 转移(Move)

转移功能会将原属性删除,并将原属性的值赋值给一个新的属性,相当于通知执行了设置值和删除两个动作。如下图所示:

Node-RED基础节点探秘:Change 节点的使用

change节点的其他知识

• 可以使用”.”和”[]”访问属性中的数组和属性中的子属性

Node-RED基础节点探秘:Change 节点的使用

• change节点中的每个步骤是按顺序执行的,拖动左侧的图标可以调整执行顺序

• change界面不但可以对消息的内容进行修改,还能修改flow和global上下文中的属性

总结

Change节点在Node-RED中扮演着至关重要的角色,为用户提供了丰富的功能,用于定制和优化消息流。通过设定值、替换值、删除和转移等操作,Change节点使得用户能够灵活地处理消息,确保其在整个流程中按照预期方式传递和被处理。

在处理消息时,Change节点的深拷贝功能提供了额外的保障,避免了引用传递可能引发的问题,确保各节点间的数据隔离和一致性。

此外,Change节点的条件执行和表达式支持,使得用户能够根据具体需求制定精细的规则,更好地适应不同的应用场景。

通过深入了解Change节点的各项功能,Node-RED用户可以更加灵活地定制其流程,确保数据的准确性和流畅性。因此,熟练运用Change节点将为Node-RED流程的设计和实施带来更大的便利。

欢迎关注我的公众号“nodered-co”,原创技术文章第一时间推送。

Node-RED基础节点探秘:Change 节点的使用

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...