我想保存name
字段的低级版本,以便我可以在名称字段上执行有效的不区分大小写的搜索。由于我正在使用外部API,因此我还将未修改的响应对象存储到我的数据库中。
我的问题:
如何在不修改API响应的情况下保存name
字段的低级版本(我仍然希望在保存新文档时将响应对象传递给我的模型)。
虚拟模型:
const userSchema = mongoose.Schema({
name: {
type: String,
required: true,
index: true,
},
name_lowercased: {
type: String,
required: true,
index: true,
}
})
我认为可以使用pre('save')
或post('save')
钩子,但我不知道如何在钩子中修改要保存的文件。
答案 0 :(得分:1)
您可以使用预保存挂钩保存名称字段的小写版本:
userSchema.pre('save', function(next) {
this.name_lowercased = this.name.toLowerCase();
next();
});