Sequelize:在create / update中获取所有传递的数据

时间:2016-12-10 22:39:21

标签: javascript node.js typescript sequelize.js

我将一个普通对象传递给我的UserModel,如下所示:

let user = await User.create(
    {email: 'foo@bar.org', password: 'foo', passwordConfirm: 'foo'}
);

请记住,实际的UserModel有两个属性:

  1. email
  2. passwordHash
  3. 现在,在beforeValidate内,我想比较passwordpasswordConfirm是否相等,在beforeCreate中,我想要bcrypt passwordpasswordHash

    不幸的是,当实体/数据到达回调时,它已经被清除并剥离了不属于模型定义的任何属性。这意味着,我只会在实例数据中收到email

    我不想做平等比较&在实例外部进行散列。有没有办法在实体内部巧妙地实现这种逻辑?

1 个答案:

答案 0 :(得分:2)

我假设您的问题中存在拼写错误,并且您希望在从密码创建哈希之前首先比较passwordpasswordConfirm(而非passwordHash)。

对于前者我建议将它移到Sequelize之外,但是如果你希望传递它,你应该创建两个类型为VIRTUAL的新字段来保存{{1并且password没有将它们提交到数据库(甚至创建列),然后使用验证器来确保它们匹配。假设验证通过,您将从passwordConfirm值创建passwordHash

password