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

How to Create and Use Enum in Mongoose

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

我的架构是:

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

但是我在这里有点困惑,我怎么能把 enum 的值放在 Java NEW("new") 中呢?如何根据可枚举值将 enum 保存到数据库中。我在 express node.js.

中使用它

谢谢

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

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

来自docs

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

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

假设我们有一个由

定义的枚举 Role
export enum Role {
  ADMIN = 'ADMIN',
  USER = 'USER'
}

我们可以像这样使用它:

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

如果您想使用 TypeScript enum,您可以在接口 IUserSchema 中使用它,但在 Schema 中您必须使用 array (Object.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
    }
});

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

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