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

标签 node.js mongodb mongoose

我有一个这样的学校架构:

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

Mongoose 默认功能在两个层面上起作用:
1) 如果输入中不存在该字段,则在保存时将字段值设置为默认值。
2) 获取时,如果保存的文档中不存在该字段,则将字段值设置为默认值。

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

我有办法做这个 Mongoose 吗?

最佳答案

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

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

此代码将在您保存您的 mongo 文档时激活。

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

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

关于node.js - 即使字段从文档中删除,Mongoose 也会返回字段的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49346190/

相关文章:

node.js - 蒙戈错误: connect UNKNOWN

javascript - 用 EJS 迭代 Mongoose 对象

javascript - 自定义异常。这个未定义

javascript - 未处理的拒绝 SequelizeEagerLoadingError : film is not associated to film

javascript - 在react.js中使用路由时,向 `component`提供的 Prop `Route`无效

node.js - 如何使用 nestjs/mongoose 在模式类中定义 mongoose 方法?

node.js - 使用 Mongoose 导出模型函数时出现问题

javascript - 无法将音频转换为文本nodejs

javascript - 启动 MongoDB 数据库时出错

mongodb - MongoDB 将写入锁定到什么级别? (或 : what does it mean by "per connection"