如何在 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 进行重用(全局)