使用Mongoose Hook保存其他字段

时间:2017-08-02 03:55:56

标签: node.js mongoose

我想保存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')钩子,但我不知道如何在钩子中修改要保存的文件。

1 个答案:

答案 0 :(得分:1)

您可以使用预保存挂钩保存名称字段的小写版本:

userSchema.pre('save', function(next) {
    this.name_lowercased = this.name.toLowerCase();
    next();
});