В коде моей модели я шифрую пароль пользователя с помощью хука beforeCreate
.
В сеялке я создаю 10 пользователей с queryInterface.bulkInsert
.
.понял это, крючки обходятся при использовании bulkInsert
.
Как можно заполнить базу данных 10 пользователями И использовать хуки, подобные упомянутому?
Файл: seeders / 20180917155607-users.js
import faker from 'faker'
import lodash from 'lodash'
export default {
up: (queryInterface, Sequelize) => {
const res = lodash.times(10, () => ({
email: faker.internet.email(),
password: 'Password',
createdAt: new Date(),
updatedAt: new Date()
}))
return queryInterface.bulkInsert('users', res, {})
},
down: (queryInterface, Sequelize) => {
// do your stuff
}
}
Файл: модели/user.js
import bcrypt from 'bcrypt'
export default (sequelize, DataTypes) => {
const User = sequelize.define('user', {
email: {
type: DataTypes.STRING,
unique: true
},
password: DataTypes.STRING
})
User.beforeCreate(async user => {
user.password = await user.generatePasswordHash()
})
User.prototype.generatePasswordHash = async function() {
const saltRounds = 10
return await bcrypt.hash(this.password, saltRounds)
}
return User
}