Node.js mongoose推送在socket.io调用中不起作用

Node.js mongoose推送在socket.io调用中不起作用,node.js,mongodb,socket.io,mongoose,Node.js,Mongodb,Socket.io,Mongoose,出于某种原因,推送到mongodb与此设置配合使用 // Fixed params story.title = 'Socketi'; story.lines.push ({ author: 'Khuram', text:'socket data'}); //Capture data from socket into schema io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'wor

出于某种原因,推送到mongodb与此设置配合使用

// Fixed params
story.title = 'Socketi';
story.lines.push ({ author: 'Khuram', text:'socket data'});


//Capture data from socket into schema
 io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });

socket.on('slog', function (data) {

console.log(data);

    });
});
但是将mongoose push语句放在socket.io调用中并不起作用

像这样:

// Fixed params
story.title = 'Socketi';



  //Capture data from socket into schema
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });

socket.on('slog', function (data) {

story.lines.push ({ author: 'Khuram', text:data.my});

    });
});
仅供参考:“slog”指的是我希望mongoose更新的事件。
我从客户端接收数据,每次发出此事件时,我都想将套接字事件数据推送到mongodb(这就是为什么我想将其放在socket.io调用中)

保存函数在哪里执行?我建议您在回调中接收到一条长消息时,将您希望发生的事情的所有逻辑放在回调中,然后在回调中调用故事实例上的save。

您如何检查
故事行.推送
是否有效?这里缺少很多代码。我只是粘贴了一段代码以保持简洁。我有上面模式的所有代码。我已经测试了story.push-out-the-socket.io调用,数据成功存储到MongoDB中-这是否回答了您的问题?您可能在并发性方面遇到了问题,但如果没有完整的代码就无法判断。尝试运行代码,然后通过mongo控制台检查数据库。你正在调用
故事
上的
.save()
?这里是指向GitHub上完整代码的链接:试试这个:这正是我一直试图做的,但我认为我的实现不正确。下面是GitHub上的完整代码:push没有回调。它是阵列的内置操作。只需在推送之后执行保存,而不是在回调中(它不存在)。我以前已经尝试过了。问题是,代码会直接迭代保存,而不必等待从事件套接字接收数据。这样做的结果是,它不会从客户端捕获任何数据。我该如何解决这个问题?您将在文件末尾终止数据库连接,您不想在那里这样做。此外,正如我上面提到的,我将保存功能正确地放置在推送的下方。给你:好的,谢谢。让我试试这个,然后向你汇报。