Orm 关联(pivot,belongToMany)中的续集挂钩(afterCreate.afterUpdate)不工作

Orm 关联(pivot,belongToMany)中的续集挂钩(afterCreate.afterUpdate)不工作,orm,associations,hook,sequelize.js,Orm,Associations,Hook,Sequelize.js,我正在使用Sequelize作为ORM构建一个API。我想在核心逻辑中加入一些“侦听器”,以检查某些值是否已更改,并在此基础上触发一些逻辑 我主要关心的一个问题是客户和用户之间的数据透视表。(属于胃)。关系在pivot中有一些额外字段,如“is_admin”或“notify_user”。这说明用户是某个客户的管理员,以及系统是否应通知该用户客户操作 我的API支持修补数据透视表的数据。现在我想做的是,例如,如果is_admin值发生变化,则触发一些其他逻辑来更新别处的foo 所有挂钩都在基本对象

我正在使用Sequelize作为ORM构建一个API。我想在核心逻辑中加入一些“侦听器”,以检查某些值是否已更改,并在此基础上触发一些逻辑

我主要关心的一个问题是客户和用户之间的数据透视表。(属于胃)。关系在pivot中有一些额外字段,如“is_admin”或“notify_user”。这说明用户是某个客户的管理员,以及系统是否应通知该用户客户操作

我的API支持修补数据透视表的数据。现在我想做的是,例如,如果is_admin值发生变化,则触发一些其他逻辑来更新别处的foo

所有挂钩都在基本对象模型(用户和客户)上工作。但是我的钩子都没有在pivot对象模型上启动

不确定Sequelize是否支持此功能

提前谢谢

我的关系设置如下:

private static setupCustomerRelations(sq: Sequelize.Sequelize) {

    const user = sq.models['User'] || new UserRepo().getNewInstance().getModel();
    const customer = sq.models['Customer'] || new CustomerRepo().getNewInstance().getModel();
    const customerUsers = sq.models['customer_users'] || new CustomerUsersRepo().getNewInstance().getModel()
    const machine = sq.models['Machine'] || new MachineRepo().getNewInstance().getModel()

    customer.belongsToMany(user, {'through': customerUsers});
    user.belongsToMany(customer, {'through': customerUsers});

    // Machines
    machine.belongsTo(customer, {'foreignKey':'customer_id'});
    customer.hasMany(machine, {'foreignKey':'customer_id'});
}
这个customerUsers是一个合适的模型

我很幸运地使用了on-join表。尝试在联接表的模型上使用
beforeBulkCreate
beforeBulkUpdate

CustomerUser.addHook('beforeBulkCreate', 'admin-only', async function(customerUsers) {
  for (const customerUser of customerUsers) {
    const user = await User.findById(customer);
    if (user.isAdmin) { /* ... */ }
  }
}

显然,这将产生大量的查询,您应该仔细考虑这一点以及如何避免这一点。

您的
归属关系是如何定义的?您的pivot表是一个合适的模型还是仅仅在关联的配置中定义为一个字符串?我将编辑上面的问题。您能显示一个不起作用的钩子吗?