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.