我设置了password
字段,如下所示:
password: {
type: Sequelize.STRING,
validate: {
len: {
args: [7, 42],
msg: "The password length should be between 7 and 42 characters."
}
}
}
这很有效。但是,当我添加set
处理程序时,要将密码转换为md5
哈希,验证将始终失败(它以我在上面设置的消息结束):
password: {
type: Sequelize.STRING,
validate: {
len: {
args: [7, 42],
msg: "The password length should be between 7 and 42 characters."
}
},
set (pass, key) {
// `key` is "password" here
this.setDataValue(key, md5(pass));
}
}
在我看来,len
和set
彼此不喜欢,但我不明白为什么。
如何解决这个问题?
答案 0 :(得分:0)
我也遇到了同样的问题,我最终在 setter 函数中创建了一个验证:
set(value) {
if (value.length >= 8 && value.length <= 20) {
this.setDataValue('password', bcrypt.hashSync(value, 10));
} else {
throw new Error('Your password should be between 8-20 characters!');
}
}
这对我有用。