在findOneAndUpdate()

时间:2017-06-18 12:00:15

标签: node.js mongoose

我有一个mongoose架构

var schema = new Schema({
    id:Number
    updated_at:Date
});

我正在使用findOneAndUpdate()来更新此模型

model.findOneAndUpdate(
    { id: json.id },
    json,
    {
        upsert: true,
        runValidators: true
    })
    .then(() => {
        recordsUpdated++;
    })
    .catch((err) => {
        this.emit('error', err);
    });

json中传递的值不正确,我需要对其进行一些修改。我正在寻找一个预钩子进行修改。我试过了

faction.pre('findOneAndUpdate', function (next) {
   this.update({ $set: { updated_at: this.getUpdate().updated_at * 1000 } });
   next();
});

简而言之,我想在更新数据库之前将时间戳(以秒为单位)转换为毫秒,但这不起作用。

1 个答案:

答案 0 :(得分:9)

盲目地扔石头后,对我有用的是

schema.pre('findOneAndUpdate', function (next) {
    this._update.updated_at *= 1000;
    next();
});

简而言之,需要修改_update属性中的文档。