所以现在我正在使用验证程序包进行电子邮件验证
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'....)
答案 0 :(得分:1)
基本上,我认为使用架构验证更有意义,并且肯定更容易维护。
使用中间件进行验证:
我以前尝试过,不得不说很难做到正确。如您所提到的,如果您将中间件定义为pre.('save', ...)
(这是要使用的正确的),则在某些情况下,当您尝试更新文档时,中间件不会得到执行,并且您已经在难以维护的单独任务中处理这些情况,您不能确定它们是否有效,或者您不会错过任何情况。 More on this topic