猫鼬更新不会立即回拨
mongoose update not calling back instantly
我确定这只是一个误会,但我想不通:/
我正在尝试在 mongoDB 中使用节点服务器上的 mongoose 更新文档。
我的代码如下所示:
Message.update(searchQuery, updateQuery, function(err, response)
{
if(err) return handleError(err);
if(response) console.log(util.inspect(response));
});
当我第一次调用这个函数时,没有执行回调,也没有对数据库应用任何更改。实际上,更新不会发生。
当我第二次调用该函数时,第一次调用的回调 returns 和第一次更新的更改将应用于数据库。第二次调用的回调没有 return 但是第二次调用没有应用任何更改。
当我第三次调用它时,应用了回调 2 returns 和更改 2,但没有应用回调和更改 3。依此类推...
我假设它与猫鼬函数有关,当没有指定回调时不直接执行,所以我尝试添加一个空的 "options" 数组:
Message.update(searchQuery, updateQuery, **{}**, function(err, response){...});
或明确执行更新:
Message.update(searchQuery, updateQuery).exec( function(err, response){...});
虽然结果没有改变。
使用猫鼬调用更新的正确方法如下:
Message.update(query, update).exec(callback);
你的 updateQuery
中到底是什么?
缺少 Mongoose 回调通常是由更新等待连接打开引起的,因为对 update
、save
、find
等的任何调用都将排队通过 Mongoose 直到 mongoose.connect
调用完成。
因此,请确保在拨打 update
之前先拨打 mongoose.connect
电话。
我确定这只是一个误会,但我想不通:/
我正在尝试在 mongoDB 中使用节点服务器上的 mongoose 更新文档。
我的代码如下所示:
Message.update(searchQuery, updateQuery, function(err, response)
{
if(err) return handleError(err);
if(response) console.log(util.inspect(response));
});
当我第一次调用这个函数时,没有执行回调,也没有对数据库应用任何更改。实际上,更新不会发生。
当我第二次调用该函数时,第一次调用的回调 returns 和第一次更新的更改将应用于数据库。第二次调用的回调没有 return 但是第二次调用没有应用任何更改。
当我第三次调用它时,应用了回调 2 returns 和更改 2,但没有应用回调和更改 3。依此类推...
我假设它与猫鼬函数有关,当没有指定回调时不直接执行,所以我尝试添加一个空的 "options" 数组:
Message.update(searchQuery, updateQuery, **{}**, function(err, response){...});
或明确执行更新:
Message.update(searchQuery, updateQuery).exec( function(err, response){...});
虽然结果没有改变。
使用猫鼬调用更新的正确方法如下:
Message.update(query, update).exec(callback);
你的 updateQuery
中到底是什么?
缺少 Mongoose 回调通常是由更新等待连接打开引起的,因为对 update
、save
、find
等的任何调用都将排队通过 Mongoose 直到 mongoose.connect
调用完成。
因此,请确保在拨打 update
之前先拨打 mongoose.connect
电话。