Cómo crear y usar Enum en Mongoose

87

Estoy tratando de crear y usar un enumtipo en Mongoose. Lo comprobé, pero no obtengo el resultado adecuado. Estoy usando enumen mi esquema de mangosta de la siguiente manera:

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

Pero estoy un poco confundido aquí, ¿cómo puedo poner el valor de un me enumgusta Java NEW("new")? ¿Cómo puedo guardar una entrada enumen la base de datos de acuerdo con sus valores enumerables? Lo estoy usando en express node.js.

Prabjot Singh
fuente

Respuestas:

134

Las enumeraciones aquí son básicamente objetos String. Cambie la línea de enumeración a en su enum: ['NEW', 'STATUS']lugar. Tiene un error tipográfico allí con las comillas.

Mindstormer619
fuente
¿Cómo se vincula esto a la tabla de usuarios? el mío no funciona. mi tabla de usuario inserté este rol: {tipo: mongoose.Schema.Types.ObjectId, ref: 'roles',},
Jm Macatangay
52

De los documentos

Mongoose tiene varios validadores incorporados. Las cadenas tienen enum como uno de los validadores. Entonces enum crea un validador y verifica si el valor se da en una matriz. P.ej:

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

Deeksha Sharma
fuente
Gracias, me funciona almacenar userType predeterminado. ¿Cómo cambiar userType a amdin desde js?
Qui-Gon Jinn
¿Cómo se vincula esto a la tabla de usuarios? el mío no funciona. mi tabla de usuario inserté este rol: {tipo: mongoose.Schema.Types.ObjectId, ref: 'roles',},
Jm Macatangay
10

Enums es objetos String, por ejemplo: enum :['a','b','c']o probablemente así const listOfEn = ['a','b','c']; => enum: listOfEn

hien711
fuente