Mongoose将默认值设置为空对象

69

我试图将 star_info 属性设置为一个对象类型(混合模式),并将其默认值设置为空对象,使用以下代码:

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

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

2个回答

128

默认情况下(为了最小化存储在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阅读更多信息


1
我尝试了这个,但是得到了以下错误信息:“无法自定义鉴别器选项 minimize(只能修改 toJSON、toObject、_id、id)”。 - estani
10
我希望能把我生命中最后30分钟找回来。 - csum
我希望那只是30分钟。 - InsOp
我想要回我的最后4个小时。2015年回答,仍然非常有用。 - Raj006

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接