Sequelize的唯一电子邮件地址

时间:2018-01-29 10:52:01

标签: mysql node.js sequelize.js

我正在使用Sequelize / MySQL运行ExpressJS,并且非常努力地让一个简单的验证器检查工作用于唯一的电子邮件地址。

这是我的用户模型。而对于我的生活,我不明白为什么这允许具有重复电子邮件地址的记录。当然,email.unique = true会阻止这种情况发生。

'use strict';
module.exports = (sequelize, DataTypes) => {
  var User = sequelize.define('User', {
    firstName: DataTypes.STRING,
    lastName: DataTypes.STRING,
    email: {
      type: DataTypes.STRING,
      allowNull: false,
      unique: true,
      validate: {
        isEmail: {
          msg: "Must be a valid email address",
        }
      }
    }
  }, {
    indexes: [{
      fields: ['email'],
      unique: true,
    }]
  });
  return User;
};

任何帮助表示感谢。

编辑: 这里要求的是创建用户的控制器代码。

const User = require('../models').User;

exports.create = (req, res) => {
  User.create( req.body )
  .then( user => {
    res.json( user );
  })
  .catch( errors => {
    res.json({ errors: errors.errors });
  });
};

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是使用sequelize.sync()根据模型中指定的模式创建表(如果该表存在),则应将{force: true}传递给sync方法,该表将放下,然后会创建一个新的。

尽管强烈建议不要使用sequelize.sync(),尤其是在生产中,由于迁移文件等问题,但您可以在Google上搜索更多信息。