mongodb 如何在Mongoose中创建和使用枚举

mec1mxoz  于 2022-12-12  发布在  Go
关注(0)|答案(6)|浏览(243)

我试图在Mongoose中创建和使用一个enum类型。我检查了它,但没有得到正确的结果。我在程序中使用enum,如下所示:
我的架构是:

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

但是我在这里有点困惑,我怎么能把一个enum的值像Java NEW("new")一样放进去呢?我怎么能根据它的可枚举值把一个enum保存到数据库中呢?我在express node.js中使用它。

6qqygrtg

6qqygrtg1#

这里的枚举基本上都是String对象。将枚举行改为enum: ['NEW', 'STATUS']。您在引号中输入了错字。

ycl3bljg

ycl3bljg2#

docs
Mongoose有几个内置的验证器。字符串有enum作为验证器之一。因此enum创建一个验证器并检查值是否在数组中给出。例如:

const userSchema = new mongoose.Schema({
   userType: {
        type: String,
        enum : ['user','admin'],
        default: 'user'
    },
})
b1zrtrql

b1zrtrql3#

假设我们有一个由下式定义的枚举Role

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

我们可以将其用作如下类型:

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

tnkciper4#

如果要使用TypeScript enum,可以在接口IUserSchema中使用它,但在架构中必须使用arrayObject.values(userRole))。

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

interface IUserSchema extends Document {
    userType: userRole
}

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

0tdrvxhp5#

Enums是String对象,例如:enum :['a','b','c']或者可能像这样const listOfEn = ['a','b','c']; => enum: listOfEn

vjrehmav

vjrehmav6#

在结构描述设计中,您可以使用enum保留字轻松地加入枚举值,如下所示:-

catagory: {
    type: String,
    enum: ['freeToPlay','earlyAccess','action','adventure','casual','indie','massivelyMultiplayer','racing','simulation','RPG','sports','statigy'],
    default: 'freeToPlay'
},

相关问题