在Mongoose

时间:2018-04-28 14:15:30

标签: javascript object mongoose ocaml mongoose-schema

我熟悉variant类型的OCaml。例如,

type foo =
    | Int of int
    | Pair of int * string

我知道如何在MongoDB中定义NumberString,但我的问题是如何在MongoDB中定义变体类型:

var PostSchema = new mongoose.Schema({
    num: { type: Number },
    name: { type: String },
    variant: ???
})

有没有人有任何想法?

编辑1:我刚刚找到this answerthis answer。他们使用类或函数来模仿variant。它在前端的JavaScript中运行良好。但问题是,是否可以将它们放在Schema

1 个答案:

答案 0 :(得分:1)

我认为mongoose希望您使用嵌套类型将属性声明为对象。使用上面的foo类型:

for(int i = 0; i < 10; i++){    
    if (i % 2 != 0)    
        System.out.println(i);    
}

或者 - 你可以踢平和使用var PostSchema = new mongoose.Schema({ num: [Number], name: [String], variant: { fooInt: [Number] fooPair: { fooInt: [Number], fooString: [String] } } }); - 但这对我来说似乎真的很愚蠢。

或者 - 以oCaml的真正精神 - 你可以使用模式(类型+对象)定义var:

mixed

varInfo的结构取决于varType。这将使你的mongo查询更容易管理。

希望这是您正在寻找的方向!仅供参考 - 我发现this simple post非常有帮助。