我将一个普通对象传递给我的UserModel,如下所示:
let user = await User.create(
{email: 'foo@bar.org', password: 'foo', passwordConfirm: 'foo'}
);
请记住,实际的UserModel有两个属性:
email
passwordHash
现在,在beforeValidate
内,我想比较password
和passwordConfirm
是否相等,在beforeCreate
中,我想要bcrypt
password
到passwordHash
。
不幸的是,当实体/数据到达回调时,它已经被清除并剥离了不属于模型定义的任何属性。这意味着,我只会在实例数据中收到email
。
我不想做平等比较&在实例外部进行散列。有没有办法在实体内部巧妙地实现这种逻辑?
答案 0 :(得分:2)
我假设您的问题中存在拼写错误,并且您希望在从密码创建哈希之前首先比较password
和passwordConfirm
(而非passwordHash
)。
对于前者我建议将它移到Sequelize之外,但是如果你做希望传递它,你应该创建两个类型为VIRTUAL
的新字段来保存{{1并且password
没有将它们提交到数据库(甚至创建列),然后使用验证器来确保它们匹配。假设验证通过,您将从passwordConfirm
值创建passwordHash
。
password