pre中间件使用undefined
1 出现Cannot set property 'updateAt' of undefined 错误,但是数据库里是有数据的
"use strict"
const PostSchema = Schema({
title: String,
meta:{
createdAt:{
type:Date,
default:Date.now()
},updateAt:{
type:Date,
default:Date.now()
}
}
}
);
PostSchema.pre('save',function(next){
if(this.isNew){//Document.prototype.isNew mongoose自己会识别
this.meta.createdAt = this.meta.updateAt=Date.now()
}else{
console.log('notnew')
this.meta.updateAt = Date.now();
}
console.log('save')
next();
})
PostSchema.pre('findOneAndUpdate',function(next){
this.meta.updateAt = Date.now(); // Cannot set property 'updateAt' of undefined
console.log('findOneAndUpdate')
next();
})
}
module.exports = mongoose.model('Post', PostSchema);
2、然后改成
PostSchema.pre(/^find/,function(next){
console.log('find')
this.meta.updateAt = Date.now();
next();
})
没有报错,但是没有输出‘find',明显没执行
3.update的时候用来save方法出现这个错误
:MongoError: E11000 duplicate key error collection: koa_vue_blog.posts index: id dup key: { : ObjectId('5bc1fa4354266f0d1d5e91c1') }
let o =new Post({
_id:id,
...ctx.request.body
})
let result= await dbHelper.Save(o);
不是this.isNew会自己判断出来吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论