sequelize.js orm:mysql的唯一电子邮件验证无法正常工作

时间:2017-06-15 05:17:07

标签: mysql node.js sails.js sequelize.js

以下是检查email-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!'
            }

        }

所有其他验证工作正常,但unique电子邮件验证

除外

4 个答案:

答案 0 :(得分:5)

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

queryInterface.addIndex('users', ['email'], {
        indexName: 'email',
        indicesType: 'UNIQUE'
    })

并将其名称设置为等于该字段,因为如果您不这样做,它将默认创建一个,并且模型将无法使用它。

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

我不知道它是关于sequelize的错误还是我正在使用的版本的问题,但它只有在我将索引名称设置为与该字段相同之后才有效。

答案 1 :(得分:1)

@media (max-width: 767px) {
  .tabs {
    display: flex;
  }
  .tabs  li {
    max-width: 33.33%;
    flex: 1 1 33.33%;
  }
  .tabs li a {
    overflow: hidden;
    text-overflow: ellipsis;
    box-sizing: border-box;
    width: 100%;
  }
}
@media (max-width: 419px) {

  .tabs {
    flex-wrap: wrap;
  }
  .tabs li {
    width: 100%;
    flex: 1 0 100%;
    max-width: 100%;
  }
  .tabs li a {
    white-space: normal;
  }
}

答案 2 :(得分:0)

试试这个

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

    }

答案 3 :(得分:0)

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!'
        }

    }

这将起作用。为此,只需将db约束添加到模型中,然后删除db并重新启动服务器即可。

或者您可以添加

db.sequelize.sync({force: true}).then(() => {
  console.log("Drop and re-sync db.");
});

访问您的 app.js 。在这种情况下, {force: true} 将每次自动删除并重建数据库。

  • 因此您可以将 {force: true} 添加到您的**db.sequelize.sync**中。
  • 重新启动服务器。
  • 检查唯一约束是否有效。
  • 从您的{force: true}中删除 **db.sequelize.sync**