我的目标是将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之后执行的,所以我在我的控制台中得到了未定义。
我怎样才能以正确的方式做到这一点?
非常感谢建议。
答案 0 :(得分:4)
当数据存在时调用emit
:
Chats.find(function(err, chat_data) {
socket.emit('chat_history', { chat_history: chat_data });
});