Muh*_*afa 10 nestjs nestjs-mongoose
这是我的架构,我想将角色设置为枚举
@Prop({ 必需: true }) 名称: 字符串;
@Prop({ 必需: true }) 电子邮件: 字符串;
@Prop({ 必需: true }) 密码: 字符串;
@Prop() 作用:字符串;
这就是我以前在猫鼬中所做的
role: {
type: String,
enum: roles,
default: 'user',
},
Run Code Online (Sandbox Code Playgroud)
const 角色 = ['用户', '管理员'];
Dez*_*ley 20
设置枚举的正确方法如下:
@Prop({ type: String, enum: Role })
role: Role
Run Code Online (Sandbox Code Playgroud)
或者:
@Prop({ type: String, enum: Role, default: Role.User })
role: Role
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以实现Mongoose模式验证和TypeScript运行时数据验证。如果省略装饰器内的配置,@Prop()您可以role通过将其强制转换为 Role 枚举来将任何值插入到该字段中:
{
role: 'blabla' as Role
}
Run Code Online (Sandbox Code Playgroud)
PS:
在以前的版本中,NestJs您必须在数组中列出支持的枚举。看到这个问题。
你需要先创建一个枚举:
enum Role {
User, //or User = "user",
Admin, // or Admin = "admin",
}
Run Code Online (Sandbox Code Playgroud)
然后将其设置为数据类型
@Prop()
role: Role
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11308 次 |
| 最近记录: |