Mongoose更新未保存在DB中

时间:2015-02-10 14:27:23

标签: node.js mongodb mongoose

我遇到了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尚未更新。

有什么建议吗?

提前致谢

1 个答案:

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