【发布时间】:2018-03-27 06:31:24
【问题描述】:
我有一个简单的用户模型如下:
'use strict';
let hashPassword = (user, options) => {
if (!user.changed('password')) { return; }
return require('bcrypt')
.hash(user.getDataValue('password'), 10)
.then(hash => user.setDataValue('password', hash));
};
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
username: {allowNull: false, type: DataTypes.STRING, unique: true},
email: {allowNull: false, type: DataTypes.STRING, unique: true},
password: {allowNull: false, type: DataTypes.STRING, unique: false},
}, {
hooks: {
beforeCreate: hashPassword,
beforeUpdate: hashPassword
}
});
return User;
};
它在创建用户时效果很好,但是beforeUpdate 钩子似乎不起作用或被调用,并且密码以纯文本形式保存在数据库中。
它从何而来,如何解决?
【问题讨论】:
标签: javascript node.js passwords hook sequelize.js