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挂钩。