Как создать и использовать 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']. У вас там опечатка в кавычках.


как связать это с таблицей пользователей? мой не работает. в моей пользовательской таблице я вставил эту одну роль: {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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.