使用node.js实现触发器sequelize和hooks

我正在尝试创build一个钩子,应该在为logging创build主键后调用。 我正在尝试使用插入的列的组合(包括主键)来生成一个数字。 实例钩子似乎被调用,而全局钩子没有被调用,hewever字段保持回来,即使我看到挂钩叫:

module.exports = function(sequelize, DataTypes) { var store = sequelize.define('store', { storenumber: DataTypes.STRING(30), //remove storespecificationid: DataTypes.INTEGER, storetypeid: DataTypes.INTEGER, storename: DataTypes.STRING(20), //remove address: DataTypes.STRING(30), city: DataTypes.STRING(30), state: DataTypes.STRING(30), zipcode: DataTypes.STRING(30) }, { classMethods: { associate: function(models) { // associations can be defined here }, hooks: { /*this is not getting called*/ afterCreate: function(store){ let strnumber = store.storetypeid + store.storespecificationid + store.id; store.updateAttributes({ storenumber: strnumber }); } } } }); /* This seems to be called store.afterCreate(function(store) { let strnumber = store.storetypeid + store.storespecificationid + store.id; store.updateAttributes({ storenumber: strnumber }); }); */ return store; }; 

有人可以澄清我做错了什么?

我想你有一个额外的对象定义classMethods

试试下面的模式

  module.exports = function(sequelize, DataTypes) { var store = sequelize.define('store', { storenumber: DataTypes.STRING(30), //remove storespecificationid: DataTypes.INTEGER, storetypeid: DataTypes.INTEGER, storename: DataTypes.STRING(20), //remove address: DataTypes.STRING(30), city: DataTypes.STRING(30), state: DataTypes.STRING(30), zipcode: DataTypes.STRING(30) }, { associate: function(models) { // associations can be defined here }, hooks: { /*this is not getting called*/ afterCreate: function(store){ let strnumber = store.storetypeid + store.storespecificationid + store.id; store.updateAttributes({ storenumber: strnumber }); } } });