如何使用socket.io发出对象?

时间:2017-01-27 23:29:14

标签: javascript json node.js socket.io

我有一个代码,我发送响应有问题。

socket.on('findUserMessages', (userName) => {
    io.sockets.connected[socket.id].emit('Checking-message', {
        type: 'ss',
        text: bot,
        user: 'bot'
    });

    var dupa = db.chat.find({ user: userName }, function(err, docs) {
        userName = userName
        if (err) throw err;
        console.log('load old messages', docs)
    })

    io.emit('private message', dupa);
})

我的节点控制台输出类似于

[ { _id: 5888bdd6cef7952e38821f35,
text: 'O rajciu rajciu',
user: 'Adam',
time: 2017-01-25T15:01:42.733Z }]

我知道输出不是JSON字符串,如何解决?我试图使用.toArray()但没有成功。

这可能是一个愚蠢的问题,但我坚持了很久。

1 个答案:

答案 0 :(得分:-1)

在发出结果之前将结果转换为json。尝试发出JSON.stringify(dupa)

修改 您的输出实际上已经是JSON(JSON数组),因此如果您只想在客户端获取JSON字符串,请在接收到emit事件时将输出转换为字符串(JSON.strigify(result)在客户端)。