即使从文档中删除字段,Mongoose也会返回字段的默认值

时间:2018-03-18 09:08:40

标签: node.js mongodb mongoose

我有这样的学校模式:

var SchoolSchema= new mongoose.Schema({
  name: {type:String, required: true}
  status: { type: String, default: "active" }
});

Mongoose默认功能适用于两个级别:
1)如果输入中没有该字段,则在保存时将字段值设置为默认值 2)在提取时,如果保存的文档中不存在该字段,则将字段值设置为默认值。

我希望它只在保存时将其设置为默认值,并且在获取文档时,如果记录中不存在status属性,则应该为状态返回null值。目前,当我从记录中删除状态属性时,它会返回“活动”。

有没有办法可以做Mongoose?

1 个答案:

答案 0 :(得分:0)

您可以使用预先保存的中间件。 它看起来像这样:

schema.pre('save', function(next) {   
 // Change your fields
 next() 
})

保存mongo文档时,将激活此代码。

Mongoose还会在您的对象中添加isNew字段,因此如果这是第一次将文档保存到数据库,您可以将此代码扩展为仅更改字段

schema.pre('save', function(next) {   
 if (this.isNew) {
   // Change your fields
 }
 next() 
})
相关问题