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

Maa*_*man 3 mongoose node.js socket.io

我的目标是将猫鼬的结果(聊天记录)传递给我的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);
});
Run Code Online (Sandbox Code Playgroud)

在此代码下,我有我的套接字连接,其工作方式如下

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

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

现在的问题是:我不知道如何将猫鼬的结果传递给socket.emit。无论我做什么,猫鼬都是在socket.emit之后执行的,所以我在控制台中未定义。

我该如何正确执行此操作?

意见非常感谢。

rob*_*lep 5

emit数据存在时调用:

Chats.find(function(err, chat_data) {
  socket.emit('chat_history', { chat_history: chat_data });
});
Run Code Online (Sandbox Code Playgroud)