我有一个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();
});
简而言之,我想在更新数据库之前将时间戳(以秒为单位)转换为毫秒,但这不起作用。
答案 0 :(得分:9)
盲目地扔石头后,对我有用的是
schema.pre('findOneAndUpdate', function (next) {
this._update.updated_at *= 1000;
next();
});
简而言之,需要修改_update
属性中的文档。