2

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

希望这是有道理的。

提前致谢。

4

2 回答 2

1

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

我认为,您还可以将每个不同的结构创建为不同的架构,但存储在同一个集合中,预先选择适当的架构。我从未尝试过,但由于底层 MongoDB 的无模式特性,它应该被允许。

于 2013-07-11T23:14:12.873 回答
0

你为什么需要这个?

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

当你想初始化它以及当你想在 MongoDB 中搜索时,你只需要知道类型。

于 2012-07-15T08:22:32.267 回答