是否将即使unique设置为true的情况也允许非唯一列输入?

时间:2018-12-19 00:13:45

标签: database sequelize.js

我有一个续集模型,其中2列条目需要唯一。如果给出了不唯一的电子邮件,则电子邮件条目可以正常工作并发送错误。但是,即使数据库中已经存在用户名字段,也将输入。我还需要添加第二个唯一的验证器才能使其正常工作吗?

这是我的模特:

module.exports = function(sequelize, DataTypes) {
  var User = sequelize.define("User", {

    email: {
      type: DataTypes.STRING,
      allowNull: false,
      unique: true,
      validate: {
        isEmail: true
      }
    },
    username: {
      type: DataTypes.STRING,
      allowNull: false,
      unique: true
    },
    password: {
      type: DataTypes.STRING,
      allowNull: false
    },
    profileImg: {
      type: DataTypes.STRING,
      defaultValue: "default.png"
    }
  });

  User.associate = function(models) {
    User.hasMany(models.Post, {
      onDelete: "cascade"
    });
  };

  User.prototype.validPassword = function(password) {
    return bcrypt.compareSync(password, this.password);
  };

  User.hook("beforeCreate", function(user) {
    user.password = bcrypt.hashSync(user.password, bcrypt.genSaltSync(10), null);
  });
  return User;
};

1 个答案:

答案 0 :(得分:0)

我的心态仍然停留在MongoDB上,并且在更改模型后没有删除数据库。删除并重新创建数据库后,一切正常。