分隔验证电子邮件,以空字符串失败

时间:2018-08-24 11:29:04

标签: postgresql sequelize.js

大家好,我有一个简短的问题 我正在使用sequalize。我创建了用户模型, 具有现场电子邮件,可以验证此类电子邮件

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

但是有时候在我的应用程序中,我想创建不带电子邮件的用户,或者将电子邮件设置为空字符串...但是验证不允许我..在某些情况下是否可以将空字符串另存为电子邮件,但要进行其他验证????

1 个答案:

答案 0 :(得分:2)

是的,您可以尝试创建自定义验证器:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <span class="aadharInput">
    <span class="inner-row">
        <span class="aadhartxt">
            <input class="inputs" type="text" maxlength="4" id="aadhaar2"  />
        </span>
  </span>
  </span>
  <span class="aadharInput">
    <span class="inner-row">
        <span class="aadhartxt">
            <input class="inputs" type="text" maxlength="4" id="aadhaar2"  />
        </span>
  </span>
  </span>
  <span class="aadharInput">
    <span class="inner-row">
        <span class="aadhartxt">
            <input class="inputs" type="text" maxlength="4" id="aadhaar3"  />
        </span>
  </span>
  </span>

您只需要自己的电子邮件验证程序(很容易找到-example

  • 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 === ""-使用正则表达式验证电子邮件