【发布时间】:2017-03-22 16:32:44
【问题描述】:
我正在构建一个使用 Sequelize 作为 ORM 的 API。我想在核心逻辑中加入一些“侦听器”,以检查某些值是否已更改并基于此触发一些逻辑。
我主要关心的一个问题是客户和用户之间的数据透视表。 (属于许多人)。该关系在数据透视表中有一些额外的字段,例如“is_admin”或“notify_user”。这描述了用户是某个客户的管理员,以及系统是否应通知该用户有关客户的操作。
我的 API 支持数据透视表数据的 PATCHING。现在我想做的是,如果 is_admin 值发生变化,启动一些其他逻辑以在其他地方更新 foo。
所有挂钩都适用于基础对象模型(用户和客户)。但是我的钩子都没有在枢轴对象模型上触发。
不确定 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 是一个合适的模型
【问题讨论】:
-
您的
belongsToMany关联是如何定义的?您的数据透视表是正确的模型还是只是在关联配置中定义为字符串? -
我将编辑上面的问题
-
你能展示一个不起作用的钩子吗?
标签: orm associations hook sequelize.js