在mongoose.js中共享和重用模式部分的策略

假设我有两个模式,例如personcompany 。 他们都应该有一个address ,其中包括一个street namenumberzipcity

避免在两个模式定义之间复制address属性的策略是什么? 我阅读了关于子文档的内容 ,但是它们似乎(1)与一个父模式绑定,(2)总是出现在数组中。

几乎太明显了,但这就是我最后想到的:

分别定义可重用的部分,但是,与我的第一个想法相反:不要在这里使用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] }); 

我的(天真?)方法可能是创build一个新的地址模式,并使用Mongoose的人口机制通过ObjectID链接到给定的地址。 但是,这本质上是模拟关系数据库的行为,我不知道如何使用像Mongo这样的平面文件存储的PC。