如何限制在Mongoose中使用混合数据types的值?
我正在使用mongoose.js和node.js。 我有一个mongoose模式如下所示。
myModel: { type: Schema.Types.Mixed, }
我想限制模式中的值到String
types的预定义值,而我的密钥应该是dynamic的。
例如,
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在这里使用的正确types? 如果不是,最好的办法是什么?
如果可能的话,最好避免使用dynamic密钥,因为它们使一切变得更加困难。 通过使myModel
成为一个包含dynamickey
和使用enum
value
validation的stringvalue
字段的数组,而不是使用Mixed
赋予字段更多的结构:
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" } ]