Sequelize:软删除寄存器的唯一验证

时间:2017-11-01 12:50:16

标签: validation sequelize.js

我正在使用sequelize,我的模型'用户',有一个具有唯一验证的字段'email'。 但是当我尝试使用旧的寄存器软删除的相同电子邮件创建一个新的寄存器时,验证会触发并且不允许我继续。 这是一个错误,唯一的验证需要一个特定的参数,或者它应该以这种方式工作?

模型上的电子邮件:

email: {    
    type: Sequelize.STRING(191),
    allowNull: false,
    unique: {
       msg: 'Email já cadastrado.'
    },    
    validate: {
       isEmail: {
           msg: 'Formato de email inválido.'
       },
       notEmpty:{
           msg: 'Email deve ser informado.'
       }
    }
}

我正在使用的续集版本是:4.17.2

1 个答案:

答案 0 :(得分:1)

这不是错误 - 它在数据库表上强制执行唯一索引。 A"软" delete只是将记录标记为已删除(例如isDeleted=true),但实际上并未从数据库表中删除它。假设数据库 允许您在唯一列中创建重复值,如果您取消了具有冲突名称的软删除项目,则会导致问题。

您可能正在寻找的功能,但您需要在应用程序中而不是在数据库级别以编程方式强制执行逻辑。