sequelize.js orm:MySQL的唯一电子邮件验证不起作用

Jab*_*baa 3 mysql node.js sequelize.js sails.js

这是我的模型验证,用于检查是否存在电子邮件ID

email:{
            type:Sequelize.STRING,
            validate:{
                notEmpty:{
                    args:true,
                    msg:"Email-id required"
                },
                isEmail:{
                    args:true,
                    msg:'Valid email-id required'
                }
            },
            unique: {
                args:true,
                msg: 'Email address already in use!'
            }

        }
Run Code Online (Sandbox Code Playgroud)

unique电子邮件验证外,所有其他验证都可以正常工作

Mat*_*eno 5

我遇到了同样的问题,为了解决这个问题,我首先添加了对模型表的索引:

queryInterface.addIndex('users', ['email'], {
        indexName: 'email',
        indicesType: 'UNIQUE'
    })
Run Code Online (Sandbox Code Playgroud)

并将其名称设置为与字段相等,因为如果您不输入该名称,则默认情况下它将创建一个,并且该模型将无法使用该名称。

email: {
    type: Sequelize.STRING(191),
    allowNull: false,
    unique: {
        msg: 'your-message-here'
    }
},
Run Code Online (Sandbox Code Playgroud)

我不知道这是sequelize上的错误还是我使用的版本存在问题,但只有在将索引名称设置为该字段的相同名称后,它才起作用。