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

时间:2015-03-27 11:18:37

标签: node.js mongodb express enums

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

我的架构是:

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

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

5 个答案:

答案 0 :(得分:96)

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

答案 1 :(得分:8)

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

答案 2 :(得分:2)

如果您想使用 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
}

答案 3 :(得分:1)

假设我们有一个由{p>定义的枚举Role

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

我们可以像这样使用它

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

答案 4 :(得分:0)

docs

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

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