javascript - 如何在运行时在nestjs中扫描所有装饰器值
问题描述
我必须收集所有出现在我的应用程序中不同位置的装饰器值作为字符串,然后在运行时将它们保存到数据库中,我不必添加它们两次(在数据库和代码中),
我试过这样做,但我不知道我用
Reflector
来自nestjs的api如下
this.reflector.getAll<string>('access', context.getHandler())
context.getHandler()
但我在运行时无法获得
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
// Here is where i want to save
await app.listen(3000);
}
bootstrap();
这是我的装饰师
@HashPermission('access_value')
请协助
解决方案
对于这样的事情,你要么需要使用像Nest 的 undocumentedDiscoveryService
这样的东西,要么需要使用像 Nest包@golevelup/nestjs-discovery
的友好包装器这样的包。然后,您可以使用诸如this.discoveryService.methodsAndControllerMethodsWithMetaAtKey
获取具有该元数据的类和方法之类的方法,然后您可以在每个方法上使用反射器类来获取元数据值。
推荐阅读
- angular - MatSort 未对数据进行排序,但已填充数据
- parsing - 避免使用 `sepBy` 解析最后一个分隔符
- javascript - JS文件被阻塞怎么办
- reactjs - SPFx 中的分类字段
- javascript - 用字母做一个正方形
- c# - .Net Core 3.1 IActionFilter 在 URL 中获取所需的参数
- bash - 为什么 if 语句在 ` if [ ''=1 ] 中执行;然后回显“真”;否则回显“假”;菲`?
- ansible - 来自已注册 var 输出的 Ansible 地图过滤器
- android - 如何检查我的通讯录中的号码是否已注册到 Whatsapp?
- python - 双循环计数器,内部和外部计数