Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 猫鼬罐头';t save()在socket.io调用中_Node.js_Mongodb_Sockets_Mongoose - Fatal编程技术网

Node.js 猫鼬罐头';t save()在socket.io调用中

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

以下是我的设置:

app.js

/sockets/games.js

我想我可能会遇到一些比赛情况,但我不确定。我将
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');
     }
});