2015-07-22 2 views
1

Я использую 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 правильный тип, который будет использоваться здесь? Если нет, то какой лучший подход?

ответ

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" } 
] 
Смежные вопросы