Validation Sequelize:使用软删除寄存器的唯一验证
我使用的是sequelize,我的模型“用户”,有一个字段“email”,具有唯一的验证。 但是,当我尝试使用旧注册表软删除的相同电子邮件创建新注册表时,将触发验证,不允许我继续。 这是一个bug,唯一的验证需要一个特定的参数,还是应该这样工作 有关型号的电子邮件:Validation Sequelize:使用软删除寄存器的唯一验证,validation,sequelize.js,Validation,Sequelize.js,我使用的是sequelize,我的模型“用户”,有一个字段“email”,具有唯一的验证。 但是,当我尝试使用旧注册表软删除的相同电子邮件创建新注册表时,将触发验证,不允许我继续。 这是一个bug,唯一的验证需要一个特定的参数,还是应该这样工作 有关型号的电子邮件: email: { type: Sequelize.STRING(191), allowNull: false, unique: { msg: 'Email já cadastrado.'
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.'
}
}
}
我使用的sequelize版本是:4.17.2这不是一个bug-它在数据库表上强制执行一个唯一的索引。“软”删除只是将记录标记为已删除(例如,
isDeleted=true
),但它实际上并没有从数据库表中删除。假设数据库允许您在“唯一”列中创建重复的值,那么如果您曾经取消删除名称冲突的“软删除”项,则会出现问题
看起来您想要的功能是可能的,但您需要在应用程序中以编程方式而不是在数据库级别强制执行逻辑。明白了,我想确定应该是什么样的。谢谢你的澄清,真的很有帮助。