Я думаю, что mongoose хочет, чтобы вы использовали вложенный тип для объявления свойства как объекта. Используя ваш тип foo выше:
var PostSchema = new mongoose.Schema({
num: [Number],
name: [String],
variant: {
fooInt: [Number]
fooPair: {
fooInt: [Number],
fooString: [String]
}
}
});
Или - вы могли бы надеть и использовать mixed
- но это мне кажется действительно бесполезным.
Или - в истинном духе oCaml - вы можете определить эту переменную, используя шаблон (тип + объект):
...
variant: {
varType: [Number],
varInfo: [Mixed]
}
Где структура varInfo зависит от varType. Это сделало бы ваши монго запросы eaiser для управления.
Надеюсь, это направление, которое вы искали! К вашему сведению - этот простой пост действительно полезен.