Как создать и использовать Enum в Mongoose

87

Я пытаюсь создать и использовать enumтип в Mongoose. Я проверил это, но не получаю должного результата. Я использую enumв своей схеме мангуста следующим образом:

var RequirementSchema = new mongoose.Schema({
   status: {
        type: String,
        enum : ['NEW', 'STATUS'],
        default: 'NEW'
    },
})

Но я здесь немного запутался, как я могу указать ценность enumлайка Java NEW("new"). Как я могу сохранить enumв базе данных в соответствии с его перечисляемыми значениями. Я использую его в express node.js.

Прабджот Сингх
источник

Ответы:

135

Перечисления здесь в основном представляют собой объекты String. Измените строку перечисления на enum: ['NEW', 'STATUS']. У вас там опечатка в кавычках.

Mindstormer619
источник
как связать это с таблицей пользователей? мой не работает. в моей пользовательской таблице я вставил эту одну роль: {type: mongoose.Schema.Types.ObjectId, ref: 'roles',},
Jm Macatangay
52

Из документов

В Mongoose есть несколько встроенных валидаторов. Строки имеют enum как один из валидаторов. Итак, enum создает валидатор и проверяет, задано ли значение в массиве. Например:

var userSchema = new mongooseSchema({
   userType: {
        type: String,
        enum : ['user','admin'],
        default: 'user'
    },
})

Дикша Шарма
источник
Спасибо, у меня работает сохранение userType по умолчанию. Как изменить userType на amdin с js?
Куай-Гон Джинн,
как связать это с таблицей пользователей? мой не работает. в моей пользовательской таблице я вставил эту одну роль: {type: mongoose.Schema.Types.ObjectId, ref: 'roles',},
Jm Macatangay
10

Enums - это объекты String, например: enum :['a','b','c']или, возможно, так const listOfEn = ['a','b','c']; => enum: listOfEn

hien711
источник