在mongoose.js中共享和重用模式部分的策略
假设我有两个模式,例如person
和company
。 他们都应该有一个address
,其中包括一个street name
, number
, zip
和city
。
避免在两个模式定义之间复制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。