导入库时如何更改 NestJS Decorator 字符串参数
How to change NestJS Decorator string parameter when importing library
我有一个带有一些应用程序(微服务)和库的 NestJs monorepo。
我有一个服务 class,我在我的所有应用程序中都使用它,所以我想将它提取到一个库中。
我认为这是个好主意,但后来我意识到,我在这个 class 的方法上有一个装饰器,每个应用程序都需要一个 不同的常量字符串 .
似乎我无法做到这一点......有什么办法吗?
基本上,我需要将加载应用程序中的常量字符串“注入”到装饰器使用的库中。
更具体地说,装饰器是一个@RabbitSubscribe()
(来自golevelup/nestjs-rabbitmq
),每个模块的队列名称(装饰器的常量字符串参数)需要不同。
但更一般地说,如果我在库中有这个 class:
@Injectable()
export class MyService {
@ADecorator({
param: 'this is the string',
})
myFunction() { ... }
}
如何在不同的应用程序中导入它,每个应用程序使用不同的字符串参数?
免责声明:我是 @golevelup/nestjs-rabbitmq.
的作者
NestJS 的官方配置模块只能在 NestJS 的 DI 系统被 bootstrapped 后实例化。因此,无法使用此模块动态配置装饰器。
为了解决这个问题(以及其他一些问题,包括更好的类型安全),我构建了一个 alternative configuration package,它与 ENV 和 .env 文件一起使用,以帮助您配置您的应用程序。使用这个包可以 bootstrap 你的应用程序配置 在 之前 NestJS DI 和任何文件包括 Decorators 都被导入所以你可以写这样的代码:
@Injectable()
export class MyService {
@ADecorator({
param: config.queueName,
})
myFunction() { ... }
}
其中 config.queueName
可以根据 ENV 值在每个应用程序实例中以不同方式检索或从 .env 或 .json 文件加载
我有一个带有一些应用程序(微服务)和库的 NestJs monorepo。 我有一个服务 class,我在我的所有应用程序中都使用它,所以我想将它提取到一个库中。
我认为这是个好主意,但后来我意识到,我在这个 class 的方法上有一个装饰器,每个应用程序都需要一个 不同的常量字符串 . 似乎我无法做到这一点......有什么办法吗? 基本上,我需要将加载应用程序中的常量字符串“注入”到装饰器使用的库中。
更具体地说,装饰器是一个@RabbitSubscribe()
(来自golevelup/nestjs-rabbitmq
),每个模块的队列名称(装饰器的常量字符串参数)需要不同。
但更一般地说,如果我在库中有这个 class:
@Injectable()
export class MyService {
@ADecorator({
param: 'this is the string',
})
myFunction() { ... }
}
如何在不同的应用程序中导入它,每个应用程序使用不同的字符串参数?
免责声明:我是 @golevelup/nestjs-rabbitmq.
NestJS 的官方配置模块只能在 NestJS 的 DI 系统被 bootstrapped 后实例化。因此,无法使用此模块动态配置装饰器。
为了解决这个问题(以及其他一些问题,包括更好的类型安全),我构建了一个 alternative configuration package,它与 ENV 和 .env 文件一起使用,以帮助您配置您的应用程序。使用这个包可以 bootstrap 你的应用程序配置 在 之前 NestJS DI 和任何文件包括 Decorators 都被导入所以你可以写这样的代码:
@Injectable()
export class MyService {
@ADecorator({
param: config.queueName,
})
myFunction() { ... }
}
其中 config.queueName
可以根据 ENV 值在每个应用程序实例中以不同方式检索或从 .env 或 .json 文件加载