beforeUpdate似乎没有被调用
我有一个简单的用户模型,如下所示:
'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; };
它在用户创build时工作得非常好,但beforeUpdate
钩子似乎不工作或被调用,并且密码以纯文本forms保存在数据库中。
它来自哪里?如何解决?
你如何更新用户? 获取用户实例并更新它并通过查询模型进行更新是有区别的。 前者是实例更新,后者是批量更新操作(即使您的filter将返回单个项目)。
这个区别很重要,因为beforeUpdate
是一个实例钩子,所以只会在实例更新时触发。 您可以更改更新用户的方式,也可以实现beforeBulkUpdate
挂钩。