简体   繁体   中英

How to emit object using socket.io?

I have a code like, I have a problem with sending response.

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);
})

My node console output is like

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

I know that output is not a JSON string, how to solve that? I was trying to use .toArray() but without succes.

That might be silly question but I am stuck with it for a long time.

Convert to json your result before emitting it. Try to emit JSON.stringify(dupa) .

EDIT Your output is actually JSON already (JSON array), so if you want to get only JSON string on client side, convert your output to string there ( JSON.strigify(result) on client side on receiving the emit event).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM