预先删除中间件不能触发

我正在使用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()