当尝试将passwordResetToken
设置为null
时,我被禁止为空错误。如果我手动对数据库运行查询,那就没问题了。
更新用户的完整代码如下:
let user = await this.usersRepository.getById(userId);
// ...
const userData = {
encryptedPassword: await bcrypt.hash(
newPasswd,
Number(process.env.BCRYPT_ROUNDS)
),
passwordResetToken: null,
passwordResetExpires: null
};
user = await this.usersRepository.update(user.id, userData);
我有一个这样定义的模型
const User = sequelize.define(
'user',
{
forename: DataTypes.STRING,
surname: DataTypes.STRING,
email: DataTypes.STRING,
encryptedPassword: DataTypes.STRING,
passwordResetToken: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
validate: {
notEmpty: false
}
},
passwordResetExpires: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: null,
validate: {
isDate: true
}
}
},
{
classMethods: {
associate() {
// associations can be defined here
}
}
}
);
您可以看到allowNull
为true,defaultValue
为null,而validate: notEmpty
设置为false。我想念什么?
使用sequelize v4.42.0
方言'mysql'
答案 0 :(得分:0)
这实际上是由npm模块structure进行的另一部分验证所导致的。
我必须在这样的架构中将empty
设置为true:
passwordResetToken: {
type: String,
required: false,
empty: true
},