使用猫鼬中间件验证密码是否错误?

时间:2020-01-13 23:25:51

标签: javascript node.js mongodb express mongoose

所以现在我正在使用验证程序包进行电子邮件验证

const validator = require('validator');

email: {
    type: String,
    required: [true, 'User must have a email'],
    unique: true,
    lowercase: true, //transform to lowercase
    validate: [validator.isEmail, 'Please provide a valid email']
  }

因此我通过堆栈溢出发现了该功能:

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']
    }
});

所以我想知道如何使用它或使用类似的东西作为猫鼬中间件运行?并且,将其用作中间件是否有意义?

示例:

userSchema.pre('save'....)

1 个答案:

答案 0 :(得分:1)

基本上,我认为使用架构验证更有意义,并且肯定更容易维护。

使用中间件进行验证:

我以前尝试过,不得不说很难做到正确。如您所提到的,如果您将中间件定义为pre.('save', ...)(这是要使用的正确的),则在某些情况下,当您尝试更新文档时,中间件不会得到执行,并且您已经在难以维护的单独任务中处理这些情况,您不能确定它们是否有效,或者您不会错过任何情况。 More on this topic

相关问题