假设我有两个模式,例如适用于person
和company
。它们都应该有address
,其中包含street name
,number
,zip
和city
。
避免在两个模式定义之间复制address
属性的策略是什么?我读到了sub docs,但它们似乎(1)与一个父模式绑定,(2)总是出现在数组中。
答案 0 :(得分:13)
几乎太明显了,但这是我最终提出来的:
分别定义可重用部分,但与我的第一个想法相反: not 在这里使用Schema
:
var addressSubschema = {
street: String, number: String, zip: String, city: String
}
只需将此部分包含在实际模式中:
var personSchema = new mongoose.Schema({
name: { type: String, required: true },
title: { type: String },
address: addressSubschema
});
var companySchema = new mongoose.Schema({
name: { type: String, required: true },
addresses: [addressSubschema]
});
答案 1 :(得分:0)
我的(天真?)方法可能是为地址创建一个新的模式,并使用Mongoose的population机制通过ObjectID链接到给定的地址。但是,这基本上模拟了关系数据库行为,而且我不确定使用像Mongo这样的平面文件存储时的PC是什么。