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

标签 node.js mongodb 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']
    }
});

关于node.js - Mongoose - 验证电子邮件语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18022365/

相关文章:

python - Raspberry-pi mqttc.publish() 到 20 个条目后 Node 红色溢出

java - SimplePath 内字段的 Querydsl 4 StringExpression

MongoDB:更新/更新与插入

node.js - Node/Express 应用程序在与 MongoDB 交互时挂起,没有给出错误

node.js - Mongoose getter 和 setter 无法正常工作

node.js - vscode 调试器 - 当进程通过 pm2 重新启动时自动附加

javascript - 如何立即执行 mongoose 查询并使用 Promise.all 等待它们?

javascript - 我们如何使用express在nodeJS中实现管理面板?

javascript - Passport JS 自定义回调调用 3 次

java - 测试响应式(Reactive)存储库 java.lang.AssertionError : expectation "assertNext" failed (expected: onNext(); actual: onComplete())