1

我正在使用 Mosca 构建一个 MQTT 服务器,并尝试将 MQTT 消息解析为 JSON 以用于数据库存储。

下面的“已发布”回调中的代码

server.on('published', (packet, client) => {
    let { payload } = packet;
    if(payload) {
        let payloadString = payload.toString();
        let payloadJson = JSON.parse(payloadString);
        console.log(payloadJson)
    }
});

JSON字符串的示例是:

{"_id":"5e928105156c40000006f9e9","温度":33,"湿度":64.9}

但我收到一条错误消息JSON.parse

SyntaxError:位置 2 处 JSON 中的意外标记 c

我应该如何正确解析此消息?

4

1 回答 1

0

看起来您正在为您的项目使用 MongoDB。

我不知道server.emit()侧面的代码是什么,因为您没有提供它。

但是在从 MongoDB 获取数据之前尝试传入.lean()将解决您的问题。

像这样的东西:

const leanDoc = await MyModel.findOne().lean();

也检查一下:https ://mongoosejs.com/docs/tutorials/lean.html

于 2020-04-22T19:01:03.360 回答