Sequelize подтверждение электронной почты, сбой с пустой строки

Loki спросил: 31 июля 2018 в 09:49 в: postgresql

Привет, ребята, у меня есть быстрый questionIm с использованием последовательности. и я создал пользовательскую модель, у которой есть полевая электронная почта, которая имеет проверку для электронных писем, подобных этой

module.exports = (sequelize, DataTypes) => sequelize.define('user', {
    name: {
        type: DataTypes.STRING,
    },
    phone: {
        type: DataTypes.STRING,
    },
    email: {
        type: DataTypes.STRING,
        validate: {
            isEmail: true,
        },
    },
});

, но иногда в моем приложении я хотел бы создать пользователя без электронной почты или по электронной почте быть emtpy string ... но проверка не позволяет мне .. есть ли какой-либо способ в некоторых случаях, чтобы пустая строка сохранялась как электронная почта, а в других - для проверки валидации ???

2 ответа

Loki ответил: 31 июля 2018 в 11:03
Большое спасибо за ваш ответ, и еще один вопрос, например, если я не хочу вызывать функцию validateEmail внутри validate, и я хотел бы вызвать isEmail of sequalize, как я могу это сделать ??
Есть решение
KarlR ответил: 31 июля 2018 в 10:30

Да, вы можете попробовать создать собственный валидатор:

validateEmail = (email) => {
  var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  return re.test(String(email).toLowerCase());
}module.exports = (sequelize, DataTypes) => sequelize.define('user', {
  name: {
    type: DataTypes.STRING,
  },
  phone: {
    type: DataTypes.STRING,
  },
  email: {
    type: DataTypes.STRING,    validate: {
      isEmailOrEmpty(val, next) {
        if (!val || val === "" || validateEmail(val)) {
          return next()
        }
        else {
          return next('email is invalid')
        }
      }
    }
  }
});

Вам просто нужен собственный валидатор электронной почты (его легко найти - пример )

  • !val - проверьте, присутствует ли значение
  • val === "" - проверьте, является ли значение emptyString
  • validateEmail(val)) - проверять электронную почту с помощью регулярного выражения