mongoose更新没有立即回电

时间:2015-05-01 11:27:24

标签: node.js mongodb mongoose

我确信这只是一种误解,但我无法弄清楚:/

我正在尝试使用mongoose在节点服务器上更新mongoDB中的文档。

我的代码如下所示:

Message.update(searchQuery, updateQuery, function(err, response)
{
    if(err) return handleError(err);
    if(response) console.log(util.inspect(response));
});

当我第一次调用此函数时,不会执行回调,也不会对数据库进行任何更改。实际上,更新不会发生。

当我第二次调用该函数时,第一次调用的回调将返回,并且第一次更新的更改将应用​​于DB。第二次调用的回调虽然没有返回,但第二次调用没有任何变化。

当我第三次调用它时,回调2返回并应用更改2,但不回调并更改3.依此类推......

我认为它与没有指定回调时直接执行的mongoose函数有关,所以我尝试添加一个空的“options”数组:

Message.update(searchQuery, updateQuery, **{}**, function(err, response){...});

或明确执行更新:

Message.update(searchQuery, updateQuery).exec( function(err, response){...});

但结果没有改变。

1 个答案:

答案 0 :(得分:1)

缺少Mongoose回调通常是由等待连接打开的更新引起的,因为对updatesavefind等的任何调用都将由Mongoose排队直到mongoose.connect来电完成。

因此,在致电mongoose.connect之前,请确保拨打update