当公司删除时,我试图删除mongoDb中的引用文档。但在我执行以下操作后,它只删除了公司,而没有执行中间件主体
const removedCompany = await CompanyModel.findOne({ _id: id }).remove();
内部模式文件
CompanySchema.pre('remove', (next) => {
// 'this' is the company being removed. Provide callbacks here if you want
// to be notified of the calls' result.
UserCompany.remove({ companyId: this._id }).exec();
next();
});
根据文档:
注意:
remove()
没有查询挂钩,只针对文档。如果设置了一个"remove"挂钩,则在调用myDoc.remove()
时会触发它,而不是在调用MyModel.remove()
时。
如果将查询重写为使用findOneAndRemove
,则可以为此添加中间件/钩子。
还要考虑Shubham关于箭头函数表达式的回答。
lambda函数将"this"实现为词法this,因此它将不起作用使用老式
CompanySchema.pre('remove', function(next){
// 'this' is the company being removed. Provide callbacks here if you want
// to be notified of the calls' result.
UserCompany.remove({ companyId: this._id }).exec();
next();
});
https://github.com/getify/You-Dont-Know-JS/blob/master/es6%20%26%20beyond/ch2.md#not-只是较短的语法,但这个