我有遗留后端。这个后端使用猫鼬。有集合“用户”。这个系列有“电子邮件”字段。
我遇到了这个错误 - 电子邮件区分大小写。我想以小写字母保存所有新电子邮件。为此,我用这个修改了“用户”模式:
email: {
type: String,
lowercase: true
}
但后端还有很多地方可以使用:
user.find({email: some_case_unnormalized_email})
或者这个:
user.findOne({email: some_case_unnormalized_email})
我不想将这些地方修改为:
user.find({email: some_case_unnormalized_email.toLowerCase()})
相反,我想为“用户”架构创建一些中间件,如:
UsersSchema.middleware('any_query', queryObject => {
if (queryObject.email) {
queryObject.email = queryObject.email.toLowerCase();
}
});
怎么做?
答案 0 :(得分:3)
使用预保存挂钩修改任何属性
UserSchema.pre('find', function(next){
var query = this;
// console.log(JSON.stringify(query, null, 2));
// update your query here
next();
})
UserSchema.pre('findOne', function(next){
var query = this;
// console.log(JSON.stringify(query, null, 2));
// update your query here
next();
})