猫鼬前置功能在中间件上不起作用删除



当公司删除时,我试图删除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-只是较短的语法,但这个

相关内容

  • 没有找到相关文章

最新更新