gpt4 book ai didi

javascript - 在 Mongoose 中定义变体类型

转载 作者:搜寻专家 更新时间:2023-11-01 04:34:51 24 4
gpt4 key购买 nike

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

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 中?

最佳答案

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

var PostSchema = new mongoose.Schema({
num: [Number],
name: [String],
variant: {
fooInt: [Number]
fooPair: {
fooInt: [Number],
fooString: [String]
}
}
});

或者 - 您可以下注并使用 mixed - 但这对我来说似乎真的很空泛。

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

 ...
variant: {
varType: [Number],
varInfo: [Mixed]
}

其中 varInfo 的结构取决于 varType。这将使您的 mongo 查询更易于管理。

希望这就是您寻找的方向!仅供引用 - 我发现 this simple post真的很有帮助。

关于javascript - 在 Mongoose 中定义变体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50077473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com