Como criar e usar Enum no Mongoose

87

Estou tentando criar e usar um enumtipo no Mongoose. Eu verifiquei, mas não estou obtendo o resultado adequado. Estou usando enumem meu esquema de mangusto da seguinte maneira:

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

Mas estou um pouco confuso aqui, como posso colocar o valor de um enumlike em Java NEW("new"). Como posso salvar um enumno banco de dados de acordo com seus valores enumeráveis. Estou usando no express node.js.

Prabjot Singh
fonte

Respostas:

134

Os enums aqui são basicamente objetos String. Altere a linha enum para enum: ['NEW', 'STATUS']. Você cometeu um erro de digitação entre aspas.

Mindstormer619
fonte
como você vincula isso à tabela do usuário? o meu não funciona. minha tabela de usuário, eu inseri esta função: {type: mongoose.Schema.Types.ObjectId, ref: 'roles',},
Jm Macatangay
52

Dos documentos

O Mongoose tem vários validadores embutidos. Strings têm enum como um dos validadores. Portanto, enum cria um validador e verifica se o valor é fornecido em uma matriz. Por exemplo:

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

Deeksha Sharma
fonte
Obrigado, funciona para mim armazenar userType padrão. Como alterar userType para amdin de js?
Qui-Gon Jinn
como você vincula isso à tabela do usuário? o meu não funciona. minha tabela de usuário, eu inseri esta função: {type: mongoose.Schema.Types.ObjectId, ref: 'roles',},
Jm Macatangay
10

Enums são objetos String, por exemplo: enum :['a','b','c']ou provavelmente assim const listOfEn = ['a','b','c']; => enum: listOfEn

hien711
fonte