Node-RED中Function节点如何引用msg.payload.tagData下的属性?
在Node-RED的Function节点中引用msg.payload.tagData属性的方法
嘿,在Node-RED的Function节点里引用msg.payload.tagData下的属性其实很直观,分几种常见场景来处理就行:
常规属性直接用点语法
如果tagData下的属性名是普通的标识符(比如不带空格、特殊符号),直接通过点.链式引用就好。比如你的tagData里有个deviceId或者temperature属性,代码示例如下:// 获取tagData下的temperature属性 const temp = msg.payload.tagData.temperature; // 可以把值赋值给新的msg字段,或者直接用于逻辑处理 msg.payload = { currentTemp: temp }; return msg;特殊字符属性用方括号语法
要是属性名里包含空格、横杠、点这类特殊字符,点语法就失效了,这时候改用方括号[]包裹属性名。比如属性名叫room-sensor或者humidity value:// 获取带横杠的属性 const sensor = msg.payload.tagData["room-sensor"]; // 获取带空格的属性 const humidity = msg.payload.tagData["humidity value"]; msg.payload = { sensorId: sensor, humidity: humidity }; return msg;tagData是数组时加索引
如果tagData本身是一个数组(比如存了多个标签数据条目),得先通过数组索引定位到具体元素,再引用它的属性。比如取数组第一个元素的status属性,或者遍历整个数组:// 取数组第一个元素的status属性 const firstItemStatus = msg.payload.tagData[0].status; // 遍历数组,提取所有元素的name属性 const allNames = msg.payload.tagData.map(item => item.name); msg.payload = allNames; return msg;
小提醒:要是不确定tagData的具体结构,先把消息输出到Debug节点,展开就能清晰看到所有属性的层级和名称,这样就不会写错引用路径啦~
内容的提问来源于stack exchange,提问作者Ton Machielsen
相关产品推荐
相关产品推荐

