【发布时间】:2018-02-07 19:17:22
【问题描述】:
在我的 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 - 它不需要。那么,问题来了:如何避免在保存时向文档添加空数组字段?
【问题讨论】:
-
这取决于您的架构,如果您的架构中定义了一个数组,它将在创建文档时创建一个空数组。如果你想玩两个版本的集合(一个有奶酪,一个没有),创建两个版本的架构look here
-
那么你找到什么了吗?我真的很感兴趣
-
我按照你的建议做了 - 玩了两个版本的集合,并为
pizza和pancake创建了单独的模式 -
你应该把你所做的作为答案并接受它,它实际上可以帮助你之后的一些人:) 干得好
-
或者,你应该这样做,这真的是你的答案。
标签: javascript node.js mongoose mongoose-schema