Sof*_*mur 5 javascript ocaml object mongoose mongoose-schema
我熟悉variantOCaml的类型.例如,
type foo =
| Int of int
| Pair of int * string
Run Code Online (Sandbox Code Playgroud)
我知道如何定义Number和String在MongoDB中,但我的问题是,如何在MongoDB中定义为上面的变量类型:
var PostSchema = new mongoose.Schema({
num: { type: Number },
name: { type: String },
variant: ???
})
Run Code Online (Sandbox Code Playgroud)
有谁有想法吗?
编辑1:我刚刚找到了这个答案和这个答案.他们使用类或函数来模仿variant.它在前端的JavaScript中运行良好.但问题是,是否可以将它们放入Schema?
我认为猫鼬希望你使用嵌套类型将属性声明为对象。使用上面的 foo 类型:
var PostSchema = new mongoose.Schema({
num: [Number],
name: [String],
variant: {
fooInt: [Number]
fooPair: {
fooInt: [Number],
fooString: [String]
}
}
});
Run Code Online (Sandbox Code Playgroud)
或者 - 你可以平底船并使用mixed- 但这对我来说似乎真的很软弱。
或者 - 本着 oCaml 的真正精神 - 您可以使用模式(类型+对象)定义 var:
...
variant: {
varType: [Number],
varInfo: [Mixed]
}
Run Code Online (Sandbox Code Playgroud)
其中 varInfo 的结构取决于 varType。这将使您的 mongo 查询更易于管理。
希望这就是您正在寻找的方向!仅供参考 - 我发现这篇简单的文章非常有帮助。
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |