mongoose更新不立即回电
我确信这只是一个误解,但我无法弄清楚:/
我正在尝试在一个节点服务器上使用mongoose来更新mongoDB中的一个文档。
我的代码如下所示:
Message.update(searchQuery, updateQuery, function(err, response) { if(err) return handleError(err); if(response) console.log(util.inspect(response)); });
当我第一次调用这个函数时,callback没有执行,也没有对数据库进行修改。 有效地,更新不会发生。
当我第二次调用函数时,第一次调用的callback将返回,第一次更新的更改将应用于DB。 第二次通话的回叫不会返回,第二次通话也不会改变。
当我第三次调用它时,callback2返回并且更改2被应用,但不callback和更改3.等等…
我认为这与mongoose函数没有直接执行时没有指定callback,所以我尝试添加一个空的“选项”数组:
Message.update(searchQuery, updateQuery, **{}**, function(err, response){...});
或明确执行更新:
Message.update(searchQuery, updateQuery).exec( function(err, response){...});
结果虽然不变。
缺lessMongoosecallback通常是由更新等待连接打开造成的,任何update
, save
, find
等的调用都将被Mongoose排队,直到mongoose.connect
调用完成。
所以请确保你的mongoose.connect
调用正在被调用之前进行update
。
用mongoose更新的正确方法如下:
Message.update(query, update).exec(callback);
什么是你的updateQuery
?