我遇到了Mongoose Update的一个奇怪问题,我不知道在哪里搜索......
我想从模型方法更新文档(我想更新,因为我需要排除验证)。这是我的代码:
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
尚未更新。
有什么建议吗?
提前致谢
答案 0 :(得分:1)
使用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);
});
};