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ńskidocs
是一个对象数组。只要它不包含函数,就可以通过套接字发送它。您试图发送的不是文档
。将emit
移动到console.log
之后,并将dupa
替换为docs
。