【问题标题】:how to scan all decorators value at runtime in nestjs如何在运行时在nestjs中扫描所有装饰器值
【发布时间】:2021-08-30 07:48:30
【问题描述】:

我必须将出现在我的应用程序中不同位置的所有装饰器值作为字符串收集,然后在运行时将它们保存到数据库中,我不必添加它们两次(在数据库和代码中),

我尝试过这样做,但我不知道我在使用

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')

请帮忙

【问题讨论】:

    标签: javascript node.js typescript nestjs


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答,请您写一篇关于如何从头开始将nestjs模块创建为npm包的博客文章(我的意思是可以添加为npm依赖项),我认为我们将采用这种方法它有用并促进其他人编写更多模块
    • 你的意思是like this one?
    • 是的,就像您在上面创建的那样
    猜你喜欢
    • 2020-03-30
    • 2018-07-27
    • 2019-08-22
    • 2021-10-25
    • 2012-11-15
    • 2021-11-14
    • 2021-12-30
    • 2021-11-25
    • 2015-07-07
    相关资源
    最近更新 更多