猫鼬更新未保存在数据库中
Mongoose update not saved in DB
我遇到了一个关于 Mongoose 更新的奇怪问题,我不知道去哪里搜索了...
我想从模型方法更新文档(我想更新是因为我需要排除验证)。这是我的代码:
module.exports.plugin = function(schema){
schema.add( { deletedAt : { type : Date, default: null } });
schema.methods.softDelete = function(done){
this.update({_id: this._id}, {deletedAt: new Date()}, function(err, num, raw){
logger.info(err, 'Number Updated: ' + num);
logger.info(raw);
done(err, num);
});
};
};
函数被正确触发,这是记录器的输出:
Number Updated: 1
(ok=true, n=1, updatedExisting=true)
这让我假设一切正常,但是(直接在 mongo 中检查)字段 deletedAt
尚未更新。
有什么建议吗?
提前致谢
使用 update
方法的实例版本时,您无需提供查询条件参数,因为该方法已经知道要更新当前实例。
因此您的方法应该如下所示:
schema.methods.softDelete = function(done){
this.update({$set: {deletedAt: new Date()}}, function(err, num, raw){
logger.info(err, 'Number Updated: ' + num);
logger.info(raw);
done(err, num);
});
};
我遇到了一个关于 Mongoose 更新的奇怪问题,我不知道去哪里搜索了...
我想从模型方法更新文档(我想更新是因为我需要排除验证)。这是我的代码:
module.exports.plugin = function(schema){
schema.add( { deletedAt : { type : Date, default: null } });
schema.methods.softDelete = function(done){
this.update({_id: this._id}, {deletedAt: new Date()}, function(err, num, raw){
logger.info(err, 'Number Updated: ' + num);
logger.info(raw);
done(err, num);
});
};
};
函数被正确触发,这是记录器的输出:
Number Updated: 1
(ok=true, n=1, updatedExisting=true)
这让我假设一切正常,但是(直接在 mongo 中检查)字段 deletedAt
尚未更新。
有什么建议吗?
提前致谢
使用 update
方法的实例版本时,您无需提供查询条件参数,因为该方法已经知道要更新当前实例。
因此您的方法应该如下所示:
schema.methods.softDelete = function(done){
this.update({$set: {deletedAt: new Date()}}, function(err, num, raw){
logger.info(err, 'Number Updated: ' + num);
logger.info(raw);
done(err, num);
});
};