首页 > 解决方案 > 如何在运行时在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')

请协助

标签: javascriptnode.jstypescriptnestjs

解决方案


对于这样的事情,你要么需要使用像Nest 的 undocumentedDiscoveryService这样的东西,要么需要使用像 Nest包@golevelup/nestjs-discovery的友好包装器这样的包。然后,您可以使用诸如this.discoveryService.methodsAndControllerMethodsWithMetaAtKey获取具有该元数据的类和方法之类的方法,然后您可以在每个方法上使用反射器类来获取元数据值。


推荐阅读