Mongoose'da Enum Nasıl Oluşturulur ve Kullanılır


92

enumMongoose'da bir tür oluşturmaya ve kullanmaya çalışıyorum . Kontrol ettim ama doğru sonucu alamıyorum. enumProgramımda aşağıdaki gibi kullanıyorum :

Şemam:

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

Ama biraz ben bir değerini koymak nasıl, burada karışık duyuyorum enumgibi Java NEW("new"). enumNumaralandırılabilir değerlerine göre bir girişi veritabanına nasıl kaydedebilirim ? Bunu ekspres node.js'de kullanıyorum.

Yanıtlar:


143

Buradaki numaralandırmalar temelde String nesneleridir. enum: ['NEW', 'STATUS']Bunun yerine enum satırını olarak değiştirin . Orada tırnak işaretlerinizle bir yazım hatası var.


bunu kullanıcı tablosuna nasıl bağlarsınız? benimki çalışmıyor. kullanıcı
— tablom

61

Gönderen docs

Mongoose'un birkaç dahili doğrulayıcısı vardır. Dizeler var enum doğrulayıcılarının biri olarak. Böylece enum bir doğrulayıcı oluşturur ve değerin bir dizide verilip verilmediğini kontrol eder. Örneğin:

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


Teşekkürler, varsayılan userType'ı depolamak benim için çalışıyor. Js'den userType'ı amdin'e nasıl değiştirebilirim?
— Qui-Gon Jinn

bunu kullanıcı tablosuna nasıl bağlarsınız? benimki çalışmıyor. kullanıcı
— tablom

10

Enums, String nesneleridir, örneğin: enum :['a','b','c']veya muhtemelen bunun gibi const listOfEn = ['a','b','c']; => enum: listOfEn


1

Diyelim ki Roletarafından tanımlanan bir numaramız var

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

Bunu tür olarak kullanabiliriz:

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

0

TypeScript'i kullanmak enumisterseniz arayüzde kullanabilirsiniz IUserSchemaancak Schema'da array(=> Object.values(userRole)) kullanmanız gerekir .

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
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.