乐闻世界logo
搜索文章和话题

@ nestjs /mongoose Schema 中如何设置枚举类型?

8 个月前提问
6 个月前修改
浏览次数55

1个答案

1

@nestjs/mongoose模块中,要在Mongoose schema中设置枚举类型,你需要在schema定义中使用enum关键字。枚举(Enum)可以限制字段的值只能是一组预定义的选项。下面是如何在NestJS中定义和使用枚举类型的例子:

首先,定义一个枚举类型。例如,如果你有一个Role枚举表示用户角色:

typescript
export enum Role { ADMIN = 'admin', EDITOR = 'editor', USER = 'user' }

接下来,在Mongoose模式定义中使用这个枚举。当定义Schema时,你可以使用@Prop装饰器并传递一个对象来配置属性的选项,包括枚举:

typescript
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; import { Role } from './role.enum'; @Schema() export class User extends Document { @Prop({ required: true }) name: string; @Prop({ type: String, enum: Role, default: Role.USER }) role: Role; } export const UserSchema = SchemaFactory.createForClass(User);

在这个例子中,我们定义了一个User类和对应的Mongoose schema。role字段被设置为枚举类型,并且限制了此字段的值必须是Role枚举中定义的值之一。我们也给role字段提供了一个默认值,即Role.USER

使用枚举的好处是,它能够确保数据的一致性,因为数据库层面会限制role字段的值只能是枚举中定义的值。如果尝试保存一个不在枚举定义范围内的值,Mongoose将会抛出一个错误。这对于确保应用程序的数据完整性非常有帮助。

2024年6月29日 12:07 回复

你的答案