在sequelize

时间:2018-01-19 15:54:00

标签: sequelize.js

我有两个型号。购买和购买详细信息与他们相关联 Purchase.hasMany(models.PurchaseDetail) PurchaseDetail.belongsTo(models.Purchase)

我在PurchaseDetail上有一个afterFind挂钩,用于检查其他模型,并向实例添加有关PurchaseDetail中使用的产品状态的数据,当我直接调用PurchaseDetail.find时它可以正常工作

但是,当我执行Purchase.find并包含PurchaseDetail时,不会触发此挂钩。

我知道我可以单独调用两个模型并自己组合并发送数据,但如果我团队中的另一个开发人员决定包含InvoiceDetail,他们将不会收到此信息。

如果包含PurchaseDetail,我该如何触发此功能?

2 个答案:

答案 0 :(得分:1)

我们在我所工作的公司所做的是将child中的afterFind钩子的行为提取到我们称为expand的原型函数中,然后调用此expand函数afterFind挂钩。

然后,我们在父实体内部创建了一个afterFind钩子,并在其中创建了一个名为child.expand()的链接。

答案 1 :(得分:0)

在其他模型 (hooks) 中不会调用 findAll({ model, include: [{ model, include }] https://github.com/sequelize/sequelize/issues/4627