我是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;
]
});
希望它有意义。
提前致谢。
答案 0 :(得分:1)
您可以将架构的自定义部分的类型设置为{},然后验证流入的不同结构。请参阅this gist。它不像为不同的情况设置不同的模式那么好,但它应该达到目的。从本质上讲,通过这种方式设置,你基本上是说文档的那一部分没有Schema。将Schemas视为文档的确定部分,此处唯一确定的部分是动态部分的占位符。
我认为,您还可以将每个不同的结构创建为不同的模式,但存储在同一个集合中,并选择适当的模式。我从来没有尝试过,但应该允许它,因为底层MongoDB没有模式性质。
答案 1 :(得分:0)
你为什么需要这个?
在Javascript中,您不需要考虑对象的类。
您只需要知道要初始化它的类型以及想要在MongoDB中搜索的时间。