Вот мои настройки:Mongoose не может сохранить() в Socket.io вызова
app.js
io.on('connection', function(socket) {
socket.on('game-save-comment', function(data) {
var result = require('./sockets/games.js')(data);
if (result) { socket.emit('comment-ok'); }
else { socket.emit('comment-not-ok'); }
});
});
./sockets/games.js
var Game = require('mongoose').model('Game');
module.exports = function(data) {
var gid = data.gid;
var index = data.move;
var comment = data.comment;
return game = Game.findOne({gid: gid}, function(err, game) {
if (!game || err) {
return result = false;
} else {
game.comments[index] = comment;
return result = game.save(function(err) {
if (err) {
return false;
} else {
return true;
}
});
}
});
}
Думаю, я могу столкнуться с каким-то гоночным состоянием, но я не уверен. Я разместил console.log
сообщений в разных местах этого кода и вызвал его. Поток попадает в функцию save()
и возвращает true
все время вверх ... однако документ никогда не обновляется в базе данных.
Я что-то не так? Все, что я хочу сделать, это обновить массив comments
по указанному индексу.
Это решило мою проблему: http://stackoverflow.com/questions/19165571/updating-a-subfield-in-a-mongodb-document -при-findone-и-сохранить – n0pe