mongoose.js 中模式部分的共享和重用策略
Posted
技术标签:
【中文标题】mongoose.js 中模式部分的共享和重用策略【英文标题】:Strategy for sharing and reusing of schema parts in mongoose.js 【发布时间】:2015-02-18 16:35:24 【问题描述】:假设,我有两个模式,例如对于person
和company
。它们都应该有一个address
,它由street name
、number
、zip
和city
组成。
避免在两个架构定义之间复制address
属性的策略是什么?我读到了 sub docs,但它们似乎 (1) 与一个父模式绑定,(2) 总是出现在一个数组中。
【问题讨论】:
看起来像是昨天这个问题的傻瓜:***.com/questions/27553941/… 【参考方案1】:几乎太明显了,但这是我最终想出的:
但是,与我最初的想法相反,单独定义可重用部分:不要在此处使用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]
);
【讨论】:
如果需要其中一些部件怎么办? 你放了一个required: true
,就像例子中一样。【参考方案2】:
我的(天真的?)方法可能是为地址创建一个新架构,并使用 Mongoose 的 population 机制通过 ObjectID 链接到给定地址。但是,这本质上是在模拟关系数据库的行为,我不确定在使用像 Mongo 这样的平面文件存储时 PC 的情况如何。
【讨论】:
如果您希望我更深入地解释人口,请告诉我,我会编辑我的答案。 谢谢你的建议,但那是我原本想避免的(因为你给出的原因:))。以上是关于mongoose.js 中模式部分的共享和重用策略的主要内容,如果未能解决你的问题,请参考以下文章