Node-RED写入传感器数据到数据库出现undefined值如何解决?
问题原因
你接收的消息结构中,温度值直接存储在msg.payload顶层字段,湿度值存储在和msg.payload平级的msg.humidity字段,你的代码错误尝试从msg.payload下读取不存在的payload、humidity子属性,所以拿到的返回值为undefined。同时你原有代码中flow.set方法的第二个参数错误包裹了引号,会导致存入flow上下文的是固定字符串而非变量实际值。
修正后的代码
// 修正取值路径,同时取消第二个参数的引号,正确读取变量值存入flow上下文 flow.set("payload", msg.payload); flow.set("humidity", msg.humidity); var date = new Date().getTime(); // 修正SQL拼接时的取值路径 msg.topic= "insert into sensor(temp, humidity, date) values('"+msg.payload+"', '"+msg.humidity+"', '"+date+"')"; return msg;
补充说明
如果没有将温湿度存储到flow全局上下文的需求,可以直接删除两行flow.set相关代码,不影响SQL语句生成和数据库写入逻辑。生产环境使用时建议更换为参数化查询方式生成SQL,避免直接拼接字符串带来的SQL注入风险。
内容的提问来源于stack exchange,提问作者이승훈
相关产品推荐
相关产品推荐

