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

使用node.js sequelize和挂钩实现触发器,node.js,triggers,sequelize.js,Node.js,Triggers,Sequelize.js,我正在尝试创建一个钩子,在为记录创建主键之后应该调用该钩子。我试图使用插入的列的组合生成一个数字,包括主键。实例钩子似乎被调用了,而全局钩子却没有被调用,即使我看到钩子被调用,字段仍然返回null: module.exports = function(sequelize, DataTypes) { var store = sequelize.define('store', { storenumber: DataTypes.STRING(30), //remove stores

我正在尝试创建一个钩子,在为记录创建主键之后应该调用该钩子。我试图使用插入的列的组合生成一个数字,包括主键。实例钩子似乎被调用了,而全局钩子却没有被调用,即使我看到钩子被调用,字段仍然返回null:

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;
};

有人能解释一下我做错了什么吗?

我想你有一个额外的对象定义类方法

尝试下面的模式

   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 });
          }
      }

  });