NODE-RED操作InfluxDB时如何使用变量作为查询标识符
Node-RED中构造InfluxDB动态查询(变量替换)方案
问题原因
你当前写的查询语句是固定字符串,ID没有被识别为变量解析,会直接将ID作为 measurement 名发起查询,因此只有替换为实际值才能生效。
实现方法
方法1:字符串拼接(兼容性最好)
适合不支持ES6语法的旧版Node-RED运行环境:
// 可根据ID的实际存储位置修改取值逻辑,示例中ID存储在msg.targetId const targetId = msg.targetId; msg.query = "SELECT time , Temper01, Temper02, Temper03, Temper04 FROM " + targetId + " WHERE time >= '2021-11-11T14:00:00Z' AND time <= '2021-11-19T14:00:00Z' tz('America/Sao_Paulo') "; return msg;
方法2:模板字符串(写法更简洁)
用ES6模板语法,避免引号拼接出错:
const targetId = msg.targetId; msg.query = `SELECT time , Temper01, Temper02, Temper03, Temper04 FROM ${targetId} WHERE time >= '2021-11-11T14:00:00Z' AND time <= '2021-11-19T14:00:00Z' tz('America/Sao_Paulo') `; return msg;
注意事项
- 如果ID值包含特殊字符、空格,需要给变量部分加双引号包裹,修改为
FROM "${targetId}"即可 - 正式使用前建议先校验ID变量非空、格式合法,避免查询语法报错
内容的提问来源于stack exchange,提问作者Daniel Fernando
相关产品推荐
相关产品推荐

