【发布时间】:2017-07-05 22:24:54
【问题描述】:
我有旧版后端。这个后端使用猫鼬。有集合“用户”。此集合具有“电子邮件”字段。
我遇到了这个错误 - 电子邮件区分大小写。我想以小写形式保存所有新电子邮件。为此,我修改了“用户”架构:
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();
}
});
怎么做?
【问题讨论】:
-
Mongoose 有一些关于他们的中间件生态系统的优秀文档mongoosejs.com/docs/middleware.html
-
这不是我需要的,也没有示例如何替换查询参数
-
@DmitryNalyvaiko 寻找
schema.pre('find', ...) -
@robertklep 我不想使用 schema.pre('find, schema.pre('findOne 等。我想要类似 schema.pre('any_query
-
@DmitryNalyvaiko 与
schema.pre('find', ...)有何不同?