因此,我正在使用Mongo作为数据库,在nestjs中开发CRUD服务器,并且试图将可以从服务构造函数(@InjectConnection() private connection?: mongoose.Connection
)获得的数据库连接注入到装饰器中。通过执行@Decorator(this.connection)
。这是不可能的,因为装饰器工厂会在初始化与数据库的连接之前运行。因此,每次使用装饰器时,连接都是未定义的。有这种情况的解决方法吗?我真的不想使用打字稿装饰器来实现该解决方案。
答案 0 :(得分:0)
装饰器有3个参数。 target是类的原型,key是将装饰器应用到的键,而第三个描述符则是更改键的值。本质上,当您键入@Decorator时,打字稿将其视为函数。这就是您定义装饰器的方式。
@Decorator=function Decorator(target:any,key:string,desc:PropertyDescriptor){}
现在您要这样写
@Decorator()
这意味着您还向右侧添加了其他()。这是简单的数学。
@Decorator()=function Decorator()(target:any,key:string,desc:PropertyDescriptor){}
要做的是将装饰器定义为函数,该函数返回具有这些参数的函数。
function Decorator(...args){
return function(target:any,key:string,desc:PropertyDescriptor){
// you can access to ...args here
}}