【问题标题】:Unique email address with SequelizeSequelize 的唯一电子邮件地址
【发布时间】:2018-07-08 01:03:12
【问题描述】:

我正在使用 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 });
  });
};

【问题讨论】:

  • 请同时发布创建/添加用户的代码
  • 最终添加了下面链接中的验证器。似乎 Sequelize 无论如何都应该做的事情,但它确实有效。 github.com/sequelize/sequelize/issues/…

标签: mysql node.js sequelize.js


【解决方案1】:

解决此问题的一种方法是使用sequelize.sync() 根据模型中指定的模式创建表,如果表存在,则应将{force: true} 传递给同步方法,该表将被删除并生成一个新表将创建一个。

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

【讨论】:

    猜你喜欢
    • 2014-05-23
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多