在Mongoose中如何声明动态Schema



我是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中搜索它。

最新更新