Node.js:如何将mongoose结果传递给我的socket.emit

时间:2014-01-02 21:33:08

标签: node.js socket.io mongoose

我的目标是将mongoose结果(聊天记录)传递给我的socket.emit。

使用下面的代码,我得到了我想要的数据库结果。

// Find all chats.
var Chats = require('./models/chats');

Chats.find(function(err, chat_data) {
    if (err) return console.error(err);
    console.dir(chat_data);
});

在这段代码下面,我有我的套接字连接,就像这样工作

// set socket on chat
io.sockets.on('connection', function (socket) {

    // emit existing chats from the db
    socket.emit('chat_history', { chat_history: 'this arrives' });

现在的问题是:我无法弄清楚如何将mongoose结果传递给socket.emit。无论我做什么,mongoose都是在socket.emit之后执行的,所以我在我的控制台中得到了未定义。

我怎样才能以正确的方式做到这一点?

非常感谢建议。

1 个答案:

答案 0 :(得分:4)

当数据存在时调用emit

Chats.find(function(err, chat_data) {
  socket.emit('chat_history', { chat_history: chat_data });
});