所以现在我正在使用验证器包进行电子邮件验证
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']
}
});
所以我想知道,我该如何使用它或使用类似的东西作为 Mongoose 中间件运行?并且,将其用作中间件有意义吗?
示例:
userSchema.pre('save'....)
最佳答案
基本上,我认为使用架构验证更有意义,并且更容易维护。
使用中间件进行验证:
我之前已经尝试过,但我不得不说很难做到正确。如果您将中间件定义为 pre.('save', ...)
(这是正确使用的),正如您所提到的,在某些情况下您会尝试更新根据文档,中间件不会被执行,您必须在单独的任务中处理这些情况,这些任务很难维护,并且您无法确定它们是否有效或者您没有错过任何情况。 More on this topic
关于javascript - 使用 mongoose 中间件验证密码是否错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59725630/