Jak*_*n-o 3 metadata express nestjs
我正在从 Nest 文档中学习课程主题反思和元数据。他们使用了@setmetadata('roles'),但我不知道元数据来自何处以及何时使用?
我不知道元数据来自哪里
首先让我们解释一下元数据的一般含义。元数据通常是指关于数据的数据。它以更简单的术语对数据进行描述(例如有关图像的数据)。从这里举一个例子。
他们用
@setmetadata('roles')。
Nest 提供了将自定义数据附加到路由处理程序的功能@SetMetadata。它是一种以声明方式定义和存储有关控制器(端点)的数据的方法。
@SetMetadata存储键值对。例如,
SetMetadata('IS_PUBLIC_KEY', true)
findAll(@Query() paginationQuery: PaginationQueryDto) {
return this.testService.findAll(paginationQuery);
}
Run Code Online (Sandbox Code Playgroud)
这里我设置一个键IS_PUBLIC_KEY,并将值设置为true。
在这种情况下,您定义一个名为role(很可能并且似乎可能缺少值)的键,它将定义哪些特定类型或角色可以访问此控制器。
它们什么时候使用?
当您想要定义守卫时可以使用它。例如,我使用上面的findAll控制器作为公共 api。在我的防护实现中,我检查并查看 IsPublic 的值是否为 true,然后允许任何使用者使用该 API。
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
const isPublic = this.reflector.get('IS_PUBLIC_KEY', context.getHandler());
if (isPublic) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
希望这能回答您的问题。
| 归档时间: |
|
| 查看次数: |
6852 次 |
| 最近记录: |