猫鼬更新未保存在数据库中

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);
    });
};