Come creare e utilizzare Enum in Mongoose


92

Sto cercando di creare e utilizzare un enumtipo in Mongoose. Ho verificato, ma non ottengo il risultato corretto. Sto usando enumnel mio programma come segue:

Il mio schema è:

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

Ma sono un po 'confuso qui, come posso mettere il valore di un enumsimile in Java NEW("new"). Come posso salvare un enumin nel database in base ai suoi valori enumerabili. Lo sto usando in express node.js.

Risposte:


143

Le enumerazioni qui sono fondamentalmente oggetti String. Cambia invece la riga enum in enum: ['NEW', 'STATUS']. Hai un errore di battitura lì con le virgolette.


come si collega questo alla tabella utente? il mio non funziona. nella mia tabella utente ho inserito questo ruolo: {type: mongoose.Schema.Types.ObjectId, ref: 'roles',},
Jm Macatangay,

61

Dai documenti

Mongoose ha diversi validatori integrati. Le stringhe hanno enum come uno dei validatori. Quindi enum crea un validatore e controlla se il valore è dato in un array. Per esempio:

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


Grazie per me funziona memorizzare userType predefinito. Come cambiare userType in amdin da js?
Qui-Gon Jinn

come si collega questo alla tabella utente? il mio non funziona. nella mia tabella utente ho inserito questo ruolo: {type: mongoose.Schema.Types.ObjectId, ref: 'roles',},
Jm Macatangay,

10

Enums è un oggetto String quindi, ad esempio: enum :['a','b','c']o probabilmente in questo modo const listOfEn = ['a','b','c']; => enum: listOfEn


1

Supponiamo di avere un enum Roledefinito da

export enum Role {
  ADMIN = 'ADMIN',
  USER = 'USER'
}

Possiamo usarlo come tipo come:

{
    type: String,
    enum: Role,
    default: Role.USER,
}

0

Se desideri utilizzare TypeScript enum puoi usarlo nell'interfaccia IUserSchemama in Schema devi usare array(=> Object.values(userRole)).

export enum userRole {
    admin = 'admin',
    user = 'user'
}

const UserSchema: Schema = new Schema({
    userType: { 
       type: String, 
       enum: Object.values(userRole), 
       default: userRole.user, required: true
    },
});

export interface IUserSchema extends Document {
    userType: userRole
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.