Node.js 将参数传递给typescript装饰器

Node.js 将参数传递给typescript装饰器,node.js,mongodb,typescript,mongoose,nestjs,Node.js,Mongodb,Typescript,Mongoose,Nestjs,因此,我正在nestjs中开发一个CRUD服务器,使用Mongo作为数据库,并尝试通过执行@decorator(this.connection)将可以从服务构造函数(@InjectConnection()private connection?:mongoose.connection)获得的数据库连接注入到decorator中。这是不可能的,因为decorator工厂在初始化到数据库的连接之前运行。因此,每次使用装饰器时,连接都是未定义的。这种情况有解决办法吗?我真的不想使用typescript装

因此,我正在nestjs中开发一个CRUD服务器,使用Mongo作为数据库,并尝试通过执行
@decorator(this.connection)
将可以从服务构造函数(
@InjectConnection()private connection?:mongoose.connection)获得的数据库连接注入到decorator中。这是不可能的,因为decorator工厂在初始化到数据库的连接之前运行。因此,每次使用装饰器时,连接都是未定义的。这种情况有解决办法吗?我真的不想使用typescript装饰器来实现这个解决方案。

typescript中的装饰器有3个参数。target是类的原型,key是应用decorator的键,第三个描述符是更改键的值。基本上,当您键入@Decorator时,typescripts将其视为一个函数。这就是您定义装饰者的方式

@Decorator=function Decorator(target:any,key:string,desc:PropertyDescriptor){}
现在你想这样写吗

@Decorator()
这意味着您还需要在右侧添加额外的()。这是简单的数学

  @Decorator()=function Decorator()(target:any,key:string,desc:PropertyDescriptor){}
您需要做的是将decorator定义为返回带有这些参数的函数的函数

function Decorator(...args){
   return function(target:any,key:string,desc:PropertyDescriptor){
   // you can access to ...args here
 }}