Node.js 猫鼬罐头';t save()在socket.io调用中
以下是我的设置: app.js /sockets/games.js 我想我可能会遇到一些比赛情况,但我不确定。我将Node.js 猫鼬罐头';t save()在socket.io调用中,node.js,mongodb,sockets,mongoose,Node.js,Mongodb,Sockets,Mongoose,以下是我的设置: app.js /sockets/games.js 我想我可能会遇到一些比赛情况,但我不确定。我将console.log消息放在代码的不同位置并触发了它。该流进入save()函数并返回true一直向上。。。但是,该文档在数据库中从未得到更新 我做错什么了吗?我只想在指定的索引处更新注释数组。您没有正确的代码,需要向导出的函数参数添加回调,并在保存完成后调用回调。类似的: var Game = require('mongoose').model('Game'); module.e
console.log
消息放在代码的不同位置并触发了它。该流进入save()
函数并返回true
一直向上。。。但是,该文档在数据库中从未得到更新
我做错什么了吗?我只想在指定的索引处更新
注释数组。您没有正确的代码,需要向导出的函数参数添加回调,并在保存完成后调用回调。类似的:
var Game = require('mongoose').model('Game');
module.exports = function(data, cb) {
var gid = data.gid;
var index = data.move;
var comment = data.comment;
Game.findOne({gid: gid}, function(err, game) {
if (!game || err) {
cb(err || "Game not found");
} else {
game.comments[index] = comment;
game.save(cb);
}
});
}
在这里:
var games = require('./sockets/games.js');
games(data, function (err) {
if (err) {
socket.emit('comment-not-ok');
} else {
socket.emit('comment-ok');
}
});
这解决了我的问题:
var Game = require('mongoose').model('Game');
module.exports = function(data, cb) {
var gid = data.gid;
var index = data.move;
var comment = data.comment;
Game.findOne({gid: gid}, function(err, game) {
if (!game || err) {
cb(err || "Game not found");
} else {
game.comments[index] = comment;
game.save(cb);
}
});
}
var games = require('./sockets/games.js');
games(data, function (err) {
if (err) {
socket.emit('comment-not-ok');
} else {
socket.emit('comment-ok');
}
});