【发布时间】:2017-06-18 12:00:15
【问题描述】:
我有一个这样的猫鼬模式
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();
});
简而言之,我想在更新数据库之前将以秒为单位的时间戳转换为毫秒,但这不起作用。
【问题讨论】:
-
在中间件中执行此操作而不是在调用
findOneAndUpdate之前修复json似乎是错误的:json.updated_at *= 1000; -
可能是。这个特定的用例可以在没有中间件的情况下完成。不过,如果知道如何实现这个过程,那就太好了。