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

qqi*_*ihq 8 database schema mongoose node.js

假设,我有两个模式,例如for personcompany.他们都应该有一个address,它由一个street name,number,zipcity.

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

qqi*_*ihq 14

几乎是显而易见的,但这是我最终提出的:

分别定义可重复使用的部分,然而,出乎我的第一个想法:千万不能Schema在这里:

var addressSubschema = {
    street: String, number: String, zip: String, city: String
}
Run Code Online (Sandbox Code Playgroud)

只需将此部分包含在实际模式中:

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]
});
Run Code Online (Sandbox Code Playgroud)