Mongoose - 验证电子邮件语法

新手上路,请多包涵

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

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

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

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

原文由 Tamas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 591
2 个回答

您可以使用正则表达式。看看这个问题: Validate email address in JavaScript?

我过去用过这个。

 UserSchema.path('email').validate(function (email) {
   var emailRegex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
   return emailRegex.test(email.text); // Assuming email has a text attribute
}, 'The e-mail field cannot be empty.')

原文由 dannyp32 发布,翻译遵循 CC BY-SA 3.0 许可协议

const mongoose = require("mongoose");

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

const userSchema = new mongoose.Schema({
  email: {
    type: String,
    required: [true, "Please enter your email"],
    validate: [validateEmail, "Please enter a valid email"],
    unique: true,
  },

module.exports = mongoose.model("User", userSchema);

原文由 elias-soykat 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题