首页 > 解决方案 > 节点红色我无法提取消息正文

问题描述

我开始使用 Node-Red 开发 MQTT 仪表板,我只是从一个简单的示例开始订阅主题并调试消息。但是,我无法获取消息的 json 值并将其从 base64 转换为字符串。

我的消息看起来像:

"{"metrics":{},"body":"eyJjb250ZW50LXNwZWMiOiJ1cm46c3BlYzpcL1wvZWNsaXBzZS5vcmdcL3VuaWRlXC9tZWFzdXJlbWVudC1tZXNzYWdlI3YyIiwiZGV2aWNlIjp7ImRldmljZUlEIjoiMTMyNDUifSwibWVhc3VyZW1lbnRzIjpbeyJzZXJpZXMiOnsiJF90aW1lIjpbMF0sIlZBIjpbMjM5MzMwLjBdfSwidHMiOiIyMDE4LTA0LTI1VDA5OjM4OjU0LjIyOCswMDAwIn1dfQ=="}"

我想提取正文消息并将其转换。

在使用 JSONconverter 后,我已经尝试过这个功能:

return msg.payload.body;

但我得到了他的错误:“函数试图发送字符串类型的消息”

节点

信息

最好的祝福

标签: javascriptnode-red

解决方案


一个 Function 节点必须返回一个消息对象——而不是一个普通的值。这就是为什么您会收到错误消息,告诉您函数正在发送字符串。

如果您希望它发送的消息的有效负载是该字符串值,您可以这样做:

msg.payload = msg.payload.body;
return msg;

对于这种类型的事情,最好使用 Change 节点移动 msg.payload.bodymsg.payload.


推荐阅读