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

Pra*_*ngh 56 enums mongodb node.js express

我正在尝试创建并使用enumMongoose中的类型.我检查了一下,但是我没有得到正确的结果.我enum在我的程序中使用如下:

我的架构是:

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

但我在这里有点困惑,我怎么能把enum类似的价值放进去Java NEW("new").如何enum根据它的可枚举值将数据保存到数据库中.我在express node.js中使用它.

Min*_*619 103

这里的枚举基本上是String对象.将枚举行更改为enum: ['NEW', 'STATUS'].你的引号有拼写错误.


小智 11

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

export enum Role {
  ADMIN = 'ADMIN',
  USER = 'USER'
}
Run Code Online (Sandbox Code Playgroud)

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

{
    type: String,
    enum: Role,
    default: Role.USER,
}
Run Code Online (Sandbox Code Playgroud)

  • 对于数组的使用,请使用 `roles: { type: [String], enum: Role, required: true, default: Role.DEFAULT }` (3认同)

Dee*_*rma 9

From the docs

Mongoose has several inbuilt validators. Strings have enum as one of the validators. So enum creates a validator and checks if the value is given in an array. E.g:

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

Run Code Online (Sandbox Code Playgroud)


小智 7

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


小智 6

在架构设计中,您可以使用enum关键字轻松添加枚举值,如下所示:-

catagory: {
    type: String,
    enum: ['freeToPlay','earlyAccess','action','adventure','casual','indie','massivelyMultiplayer','racing','simulation','RPG','sports','statigy'],
    default: 'freeToPlay'
},
Run Code Online (Sandbox Code Playgroud)


Jax*_*x-p 5

如果您想使用 TypeScript,enum您可以在界面中使用它,IUserSchema但在 Schema 中您必须使用array( Object.values(userRole))。

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
}
Run Code Online (Sandbox Code Playgroud)