我设置了如下所示的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
不喜欢对方,但我不明白为什么。
如何解决这个问题?
我也遇到了同样的问题,最终在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!');
}
}
这符合我的目的。