如何限制在Mongoose中使用混合数据types的值?

我正在使用mongoose.js和node.js。 我有一个mongoose模式如下所示。

myModel: { type: Schema.Types.Mixed, } 

我想限制模式中的值到Stringtypes的预定义值,而我的密钥应该是dynamic的。

例如,

  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在这里使用的正确types? 如果不是,最好的办法是什么?

如果可能的话,最好避免使用dynamic密钥,因为它们使一切变得更加困难。 通过使myModel成为一个包含dynamickey和使用enum valuevalidation的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" } ]