预先删除中间件不能触发
我正在使用mongoose,并试图级联删除,但不幸的是我的预删除中间件不是由于某种原因而解雇。
var presentationSchema = new Schema({ id: Number, title: String, pdfURL: String, created_at: Date, updated_at: Date, slides: [{ type: Schema.Types.ObjectId, ref: 'Slide' }] }); presentationSchema.pre('remove', function(next) { console.log("delete slides" + this._id); next(); }); // the schema is useless so far // we need to create a model using it var Presentation = mongoose.model('Presentation', presentationSchema); // make this available to our users in our Node applications module.exports = Presentation;
也许你被这种mongoose的“特征”所吸引:
注意:对于remove(),没有查询挂钩,仅用于文档。 如果您设置了“删除”钩子,则在您调用myDoc.remove()时将会触发,而不是在调用MyModel.remove()时触发。 注意:create()函数触发save()钩子。
当你调用myPres.remove()
而不是像Presentation.remove()
这样的模型调用remove函数时pre('remove',...)
你的pre('remove',...)
Presentation.remove()
- Mongoose:将.project(聚合)与.find()。limit()。sort()等相关联
- 麻烦debugging一个mongoosefind():既不是err也不是成功
- 带Mongoose OOP的Node.JS – 如何将mongoose数据访问代码与纯数据对象分开?
- 使用mongoose更新mongoDb中数组内部的对象
- 如何find与nodejs和mongoose的文件,为什么没有结果?
- 从callback中返回一个值,或者在node.js中的特定callback之外访问它?
- MongoDBsorting使用超过最大的RAM,但正在使用索引?
- 在Mongoosepath中使用Promise
- replacemongodb文档而不添加属性