我熟悉variant
类型的OCaml。例如,
type foo =
| Int of int
| Pair of int * string
我知道如何在MongoDB中定义Number
和String
,但我的问题是如何在MongoDB中定义变体类型:
var PostSchema = new mongoose.Schema({
num: { type: Number },
name: { type: String },
variant: ???
})
有没有人有任何想法?
编辑1:我刚刚找到this answer和this answer。他们使用类或函数来模仿variant
。它在前端的JavaScript中运行良好。但问题是,是否可以将它们放在Schema
?
答案 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非常有帮助。