So erstellen und verwenden Sie Enum in Mongoose

87

Ich versuche, einen enumTyp in Mongoose zu erstellen und zu verwenden . Ich habe es ausprobiert, aber ich bekomme nicht das richtige Ergebnis. Ich verwende enumin meinem Mungo-Schema Folgendes:

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

Aber ich bin hier ein bisschen verwirrt, wie kann ich den Wert eines enumLike in setzen Java NEW("new"). Wie kann ich ein enumIn in der Datenbank gemäß den aufzählbaren Werten speichern? Ich benutze es in Express Node.js.

Prabjot Singh
quelle

Antworten:

135

Die Aufzählungen hier sind im Grunde String-Objekte. Ändern Sie enum: ['NEW', 'STATUS']stattdessen die Aufzählungszeile in . Sie haben dort einen Tippfehler mit Ihren Anführungszeichen.

Mindstormer619
quelle
Wie verknüpft man dies mit der Benutzertabelle? meins funktioniert nicht. In meiner Benutzertabelle habe ich diese eine Rolle eingefügt: {type: mongoose.Schema.Types.ObjectId, ref: '
role
52

Aus den Dokumenten

Mungo hat mehrere eingebaute Validatoren. Strings haben eine Aufzählung als einer der Validatoren. Enum erstellt also einen Validator und prüft, ob der Wert in einem Array angegeben ist. Z.B:

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

Deeksha Sharma
quelle
Vielen Dank, es funktioniert für mich, Standardbenutzertyp zu speichern. Wie ändere ich userType von js in amdin?
Qui-Gon Jinn
Wie verknüpft man dies mit der Benutzertabelle? meins funktioniert nicht. In meiner Benutzertabelle habe ich diese eine Rolle eingefügt: {type: mongoose.Schema.Types.ObjectId, ref: '
role
10

Enums ist String-Objekte, zum Beispiel: enum :['a','b','c']oder wahrscheinlich so const listOfEn = ['a','b','c']; => enum: listOfEn

hien711
quelle