簡體   English   中英

帶有 Sequelize 的唯一電子郵件地址

[英]Unique email address with Sequelize

我正在使用 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.sync()根據模型中指定的模式創建表,如果表存在,則應將{force: true}傳遞給同步方法,該表將被刪除,並且將創建新的。

盡管由於遷移文件等問題,不強烈推薦使用sequelize.sync()特別是在生產中,但您可以通過 google 搜索更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM