在我的Food
架构中,我有基于另一个名为 的字段的不同字段yummy
。例如:
yummy
等于pancake
,我的字段是dough
和jam
yummy
等于pizza
,我的字段是dough
,meat
并且cheese
等。它在保存文档时按预期工作 - 我只是传递我想按文档保存的字段,因为除了yummy
. 所以如果我保存:
{
yummy: 'pizza'
dough: 'thin'
meat : 'peperroni',
cheese: [ObjectId("59a65a4f2170d90b0436ed4b")] // refs to the cheeses collection.
}
我的文档看起来像预期的那样。
问题在于type: Array
. 当我保存时:
{
yummy: 'pancake',
dough: 'thick',
jam: 'blueberry'
}
我的文档与附加cheese: []
字段一起保存。在我的架构中,奶酪的定义如下:
Mongoose.model('Food', {
...
cheese: {
type: [{ type: Mongoose.Schema.ObjectId, ref: 'Cheese' }],
required: false
},
...
});
我检查了 mongo 是否需要文档将数组字段预定义为空以备$push
更新时使用 - 它不需要。所以,问题是:如何避免在保存时向我的文档添加空数组字段?
保存文档时,猫鼬会查看相关集合的架构。
它需要您提供的所有字段并设置值。它还为您没有提供任何内容的字段创建默认值。
这就是猫鼬的行为。
在你的情况下,我们能做什么?
我们将创建与同一个集合相关的两个模式。一种有田间奶酪,一种没有。因此,当您使用不带 的架构保存新文档时cheese
,它不会被创建。
在实践中,集合将包含两种不同的文档类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句