Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用socket.io发射对象?_Javascript_Json_Node.js_Socket.io - Fatal编程技术网

Javascript 如何使用socket.io发射对象?

Javascript 如何使用socket.io发射对象?,javascript,json,node.js,socket.io,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 }, func

我的代码是,我在发送响应时遇到问题

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(),但没有成功


这可能是个愚蠢的问题,但我已经被它困扰了很长时间

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

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

。这是异步函数的返回值。@Aᴍɪʀ是的,刚刚注意到他没有从回调中发出。可能的重复需要在回调中发出结果<代码>io.emit('私人消息',文档)我不知道从哪里开始。
userName=userName
做什么?@Aᴍɪʀ此“docs”对象不是有效的JSON对象,这是主要问题。@PiotrKaliński
docs
是一个对象数组。只要它不包含函数,就可以通过套接字发送它。您试图发送的不是
文档
。将
emit
移动到
console.log
之后,并将
dupa
替换为
docs