node.js - Mongoose - 验证电子邮件语法

我有一个供用户使用的 Mongoose 模式 (UserSchema),我想验证电子邮件是否具有正确的语法。我目前使用的验证如下:

UserSchema.path('email').validate(function (email) {
  return email.length
}, 'The e-mail field cannot be empty.')

但是,这只检查字段是否为空,而不检查语法。

是否已经存在我可以重复使用的东西,或者我必须想出自己的方法并在 validate 函数中调用它?

最佳答案

您还可以使用 ma​​tchvalidate 属性在架构中进行验证

例子

var validateEmail = function(email) {
    var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    return re.test(email)
};

var EmailSchema = new Schema({
    email: {
        type: String,
        trim: true,
        lowercase: true,
        unique: true,
        required: 'Email address is required',
        validate: [validateEmail, 'Please fill a valid email address'],
        match: [/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/, 'Please fill a valid email address']
    }
});

https://stackoverflow.com/questions/18022365/

相关文章:

mongodb - 用于 maxdistance 和 MongoDB 的单位?

MongoDB 查询帮助 - 查询子对象中任何键的值

mongodb - MongoDB 中的条件 $sum

mongodb - 如何查询 MongoDB 以测试项目是否存在?

mongodb - 升级mongodb没有效果仍然显示旧版本

mongodb - 如何在 mongodb 配置文件中设置授权?

arrays - MongoDB重命名数组中的数据库字段

node.js - MongoDB - 错误 : invalid schema, 预期 mongod

mongodb - 无法在提供的主机和端口上连接到 MongoDB

python - 在 Flask 中将表单 POST 对象转换为适合 mongodb 的表示形式