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

Posted

技术标签:

【中文标题】如何在 Mongoose 中创建和使用枚举【英文标题】:How to Create and Use Enum in Mongoose 【发布时间】:2015-05-31 17:02:21 【问题描述】:

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

我的架构是:

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

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

谢谢

【问题讨论】:

这个问题有大量修正 OP 的错字,从而解决了问题,这使得接受的答案有点混乱。请考虑写入的原始数组缺少“'”:enum: ['NEW, 'STATUS'] 【参考方案1】:

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

【讨论】:

如何将它链接到用户表?我的不行。我的用户表我插入了这个角色: type: mongoose.Schema.Types.ObjectId, ref: 'roles', , 确切地说,您在这里展示的是一个字符串数组,而不是“字符串对象”。【参考方案2】:

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

【讨论】:

【参考方案3】:

来自docs

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

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

【讨论】:

感谢它对我存储默认用户类型有用。 js如何将userType改为amdin? 如何将它链接到用户表?我的不行。我的用户表我插入了这个角色: type: mongoose.Schema.Types.ObjectId, ref: 'roles', ,【参考方案4】:

假设我们有一个枚举 Role 定义为

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

我们可以像这样使用它:


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

【讨论】:

在 NestJs 7 上正确测试和验证 ^ 如果使用数组,请使用roles: type: [String], enum: Role, required: true, default: Role.DEFAULT 【参考方案5】:

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

【讨论】:

【参考方案6】:

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

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

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何在 Mongoose 中创建和使用枚举的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中创建和使用 SnackBar 进行重用(全局)

如何在 locust 中创建和使用自定义命令行参数

如何在 Python 中的 Pymmsql 中创建和重新创建索引?

如何在 Angular CLI 中创建和使用新的构建配置?

如何在 NMake 中创建和使用多行字符串变量?

如何在 Protractor 中创建和操作 Promise?