在Mongoose中,如何声明dynamicSchema

我是Mongoose的新手,在官方文档中我没有发现任何与我需要的东西有关的东西。

我怎样才能声明一个dynamic的子模式?

例如:

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; ] }); 

希望这是有道理的。

提前致谢。

你为什么需要这个?

在Javascript中,您不需要考虑对象的类。

你只需要知道types,当你想要初始化它,当你想在MongoDBsearch。

您可以将模式的自定义部分的types设置为{},然后validationstream入的不同结构。请参阅此要点 。 它不同于为不同的情况设置不同的模式,但它应该达到目的。 从本质上讲,通过这样设置,你基本上是说文档的这个部分没有Schema。 将模式视为文档的确定部分,这里唯一确定的部分是dynamic部分的占位符。

我认为,您也可以将每个不同的架构创build为不同的架构,但存储在同一个集合中,并预先select适当的架构。 我从来没有尝试过,但应该允许,因为基础MongoDB的无模式性质。