我正在mongoose.js使用node.js。我有一个mongoose架构,如下所示。
myModel: {
type: Schema.Types.Mixed,
}
我想将架构中的值限制为类型的预定义值
String
我的钥匙应该是动态的。
例如,
myModel: {
"Dynamic Key 1" : "Restricted value 1",
"Dynamic Key 2" : "Restricted value 2",
"Dynamic Key 3" : "Restricted value 3"
}
我的值必须接受Restricted value 1
,Restricted value 2
和Restricted value 3
,只允许键无限制地接受任何内容。
Schema.Types.Mixed这里使用的是正确的类型吗?如果没有,最好的方法是什么?
答案 0 :(得分:4)
如果可能的话,最好避免使用动态密钥,因为它们会使一切变得更难。不要使用Mixed
,而是通过使myModel
包含动态key
值和字符串value
字段的数组,为字段提供更多结构使用enum
验证:
myModel: [{
key: String,
value: {
type: String,
enum: ['Restricted value 1', 'Restricted value 2', 'Restricted value 3']
}
}]
您的示例文档将成为:
myModel: [
{ key: "Dynamic Key 1", value: "Restricted value 1" },
{ key: "Dynamic Key 2", value: "Restricted value 2" },
{ key: "Dynamic Key 3", value: "Restricted value 3" }
]