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通常是由更新等待连接打开造成的,任何updatesavefind等的调用都将被Mongoose排队,直到mongoose.connect调用完成。

所以请确保你的mongoose.connect调用正在被调用之前进行update

用mongoose更新的正确方法如下:

 Message.update(query, update).exec(callback); 

什么是你的updateQuery