2017-01-20 9 views
0

を播種したときに別のレコードを作成するときに、私は(例えばテストを)うまく動作する私のモデルに宣言フックを持って実行sequelizeモデルフック私は現在sequelizeとPostgreSQLデータベースをシードしようとしている

私の中でデータをいシードファイルは最終テーブルにどのように表示されるか、または作成時にフックを呼び出すことができますか?ここで

は、私のファイルは、以下のとおりです。

/*users-seed.js*/ 
'use strict' 

module.exports = { 
    up: function (queryInterface, Sequelize) { 
    return queryInterface.bulkInsert('Users', [/*users-data*/]) 
    }, 
    down: function (queryInterface, Sequelize) { 
    return queryInterface.bulkDelete('Users', null, {}) 
    } 
} 

そして

/*user.js*/ 
module.exports = function (sequelize, DataTypes) { 
    let User = sequelize.define('User', { 
    /* user attributes */ 
    }, { 
     instanceMethods: { 
     hashPassword: function (password) { 
      return bcrypt.hash(password, 15) 
     }, 
     hashEmail: function (email) { 
      return crypto.createHash('sha256').update(email).digest('hex') 
     } 
     }, 
     hooks: { 
     beforeCreate: function (user) { 
      return user.hashPassword(user.password_digest).then(function (hashedPassword) { 
      user.email = user.hashEmail(user.email) 
      user.password_digest = hashedPassword 
      }).catch(e => { console.log('e', e); throw new Error(e) }) 
     }, 
     beforeBulkCreate: function (users) { 
      return users.forEach(function (user) { 
      return user.hashPassword(user.password_digest).then(function (hashedPassword) { 
       user.email = user.hashEmail(user.email) 
       user.password_digest = hashedPassword 
      }).catch(e => { console.log('e', e); throw new Error(e) }) 
     }) 
     } 
     } 
    }) 
    return User 
} 

答えて

0

[OK]を、それは私の間違いだったので、私は、私はそれが「挿入」の前モデルフックを呼ばれると思ったかqueryInterface.bulkInsert()作品missunderstood (はい、これは私が誤解したものです)データベース内のそれらの文字列に入れた生データを挿入すると、私はそれがドキュメントの中でbulkCreate、bulkUpdateなどを使ってモデルインスタンスで示されていると思います。

関連する問題