2017-01-27 11 views
1

レコードの主キーが作成された後に呼び出されるフックを作成しようとしています。私はプライマリキーを含め、挿入された列の組み合わせを使用して数値を生成しようとしています。node.jsを使用してトリガーを実装するsequelizeとフック

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

誰かが私がやっているものにいくつかの光を当てることができます:インスタンスフックは、グローバルフックが呼び出さ取得されていないのに対し、heweverフィールドは、私はフックが呼ばれた見ていていても、バックナルくる呼び出されますように思われます違う?

答えて

1

は、私はあなたが

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

    }); 
以下のスキーマを試してみてください

1つの余分のオブジェクト定義されたクラスメソッドを持っていると思います

関連する問題