Mongoose 将默认设置为空对象

Posted

技术标签:

【中文标题】Mongoose 将默认设置为空对象【英文标题】:Mongoose set default as empty object 【发布时间】:2015-05-25 03:17:56 【问题描述】:

我正在尝试将 star_info 属性设置为对象类型(混合架构)并将其默认值设置为空对象使用

star_info:  type : Schema.Types.Mixed, default :  

在数据库中,保存文档时没有字段star_info。如何让mongoose设置默认值?

【问题讨论】:

【参考方案1】:

默认情况下(为了尽量减少存储在 MongoDB 中的数据),Mongoose 不会将空对象保存到您的数据库中。您可以通过在创建架构时将minimize 标志设置为false 来覆盖此行为。例如:

const schema = new Schema(
  star_info:  type: Schema.Types.Mixed, default:  
,  minimize: false )

现在star_info 将默认为一个空对象并保存到数据库中。

阅读更多http://mongoosejs.com/docs/guide.html#minimize

【讨论】:

我试过这个但得到:Can't customize discriminator option minimize (can only modify toJSON, toObject, _id, id) 我想要回到我生命的最后 30 分钟【参考方案2】:

如果您不介意从数据库中省略空对象,但希望它们出现在 JSON 中,只需使用 obj.toJSON(minimize: false)

【讨论】:

以上是关于Mongoose 将默认设置为空对象的主要内容,如果未能解决你的问题,请参考以下文章

使用 mongoose 将 mongo 对象的字段设置为空

我应该让我的对象属性为空还是为每种类型使用 CLR 默认值?

Mongoose:无法将数据保存到空对象

如果值不为空,如何仅在对象中添加字段? Javascript

是否可以将对象设置为空?

js判断一个对象是否为空对象