wsc*_*rge 1 javascript mongoose node.js mongoose-schema
在我的Food架构中,我根据其他字段调用了不同的字段yummy.例如:
yummy等于pancake,我的领域是dough和jamyummy等于pizza,我的领域是dough,meat和cheese它在保存文档时按预期工作 - 我只是传递我希望按文档保存的字段,因为除了之外都不需要它们yummy.所以,如果我保存:
{
yummy: 'pizza'
dough: 'thin'
meat : 'peperroni',
cheese: [ObjectId("59a65a4f2170d90b0436ed4b")] // refs to the cheeses collection.
}
Run Code Online (Sandbox Code Playgroud)
我的文件看起来像预期的.
问题出在领域type: Array.当我保存:
{
yummy: 'pancake',
dough: 'thick',
jam: 'blueberry'
}
Run Code Online (Sandbox Code Playgroud)
我的文档保存了一个附加cheese: []字段.在我的模式中,cheese定义如下:
Mongoose.model('Food', {
...
cheese: {
type: [{ type: Mongoose.Schema.ObjectId, ref: 'Cheese' }],
required: false
},
...
});
Run Code Online (Sandbox Code Playgroud)
我检查了mongo是否需要doc将数组字段预定义为空,以防$push在更新中使用 - 它没有.所以,问题是:如何避免在保存时向我的文档添加空数组字段?
保存文档时,mongoose会查看相关集合的架构.
它需要您提供的所有字段并设置值.它还为您没有提供任何内容的字段创建默认值.
那是猫鼬的行为.
在你的情况下我们能做什么?
我们将创建与同一集合相关的两个模式.一个用野外奶酪,一个没有.因此,当您要使用架构保存新文档时cheese,它不会被创建.
在实践中,该集合将包含两种不同的文档类型.
| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |