在Mongoose中如何声明动态Schema

时间:2012-07-14 23:45:21

标签: node.js schema mongoose

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

希望它有意义。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以将架构的自定义部分的类型设置为{},然后验证流入的不同结构。请参阅this gist。它不像为不同的情况设置不同的模式那么好,但它应该达到目的。从本质上讲,通过这种方式设置,你基本上是说文档的那一部分没有Schema。将Schemas视为文档的确定部分,此处唯一确定的部分是动态部分的占位符。

我认为,您还可以将每个不同的结构创建为不同的模式,但存储在同一个集合中,并选择适当的模式。我从来没有尝试过,但应该允许它,因为底层MongoDB没有模式性质。

答案 1 :(得分:0)

你为什么需要这个?

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

您只需要知道要初始化它的类型以及想要在MongoDB中搜索的时间。