我是Mongoose的新手,在官方文档中我没有找到任何与我需要的东西相关的东西。
如何声明动态的子架构?
例如:
var A = new Schema({
name : String,
subtype : String,
description : String
});
var B = new Schema({
name : String,
description : String
});
var C = new Schema({
name : String,
type : [if(type.value == 'A') then uses Schema-A;
if(type.value == 'B') then uses Schema-B;
]
});
希望它有意义。
提前谢谢。
您可以将模式的自定义部分的类型设置为{},然后验证流入的不同结构。这不如为不同的情况设置不同的Schema好,但它应该达到目的。从本质上讲,通过这样设置,您实际上是在说文档的这一部分没有Schema。将Schemas视为文档的确定部分,这里唯一确定的部分是动态部分的占位符。
我认为,您也可以将每个不同的结构创建为不同的模式,但存储在同一个集合中,提前选择合适的模式。我从未尝试过,但应该允许这样做,因为底层MongoDB的无模式特性。
为什么需要这个?
在Javascript中,您不需要考虑对象的类。
您只需要知道什么时候要初始化它,什么时候要在MongoDB中搜索它。