Jak tworzyć i używać Enum w Mongoose

87

Próbuję utworzyć i używać enumtypu w Mongoose. Sprawdziłem to, ale nie otrzymuję właściwego wyniku. Używam enumw moim schemacie mangusty w następujący sposób:

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

Ale jestem trochę zdezorientowany, jak mogę umieścić wartość enumpolubienia w Java NEW("new"). Jak mogę zapisać enumin do bazy danych zgodnie z jego wyliczalnymi wartościami. Używam go w Express node.js.

Prabjot Singh
źródło

Odpowiedzi:

135

Wyliczenia tutaj są w zasadzie obiektami typu String. Zmień wiersz wyliczenia na enum: ['NEW', 'STATUS']zamiast. Masz tam literówkę ze swoimi cudzysłowami.

Mindstormer619
źródło
jak to połączyć z tabelą użytkowników? mój nie działa. w mojej tabeli użytkowników wstawiłem tę jedną rolę: {type: mongoose.Schema.Types.ObjectId, ref: 'roles',},
Jm Macatangay
52

Z dokumentów

Mongoose ma kilka wbudowanych walidatorów. Ciągi mają enum jako jeden z walidatorów. Więc enum tworzy walidator i sprawdza, czy wartość jest podana w tablicy. Na przykład:

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

Deeksha Sharma
źródło
Dzięki, że dla mnie działa przechowywanie domyślnego typu użytkownika. Jak zmienić userType na amdin z js?
Qui-Gon Jinn
jak to połączyć z tabelą użytkowników? mój nie działa. w mojej tabeli użytkowników wstawiłem tę jedną rolę: {type: mongoose.Schema.Types.ObjectId, ref: 'roles',},
Jm Macatangay
10

Enums to obiekty typu String, więc na przykład: enum :['a','b','c']lub prawdopodobnie w ten sposób const listOfEn = ['a','b','c']; => enum: listOfEn

hien711
źródło