如何在Mongoose中使用混合数据类型限制值?

时间:2015-07-22 14:13:46

标签: node.js mongodb mongoose

我正在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 1Restricted value 2Restricted value 3,只允许键无限制地接受任何内容。

Schema.Types.Mixed这里使用的是正确的类型吗?如果没有,最好的方法是什么?

1 个答案:

答案 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" }
]