2017-09-09 40 views
1

我想写一个装饰,可以检查查询参数的长度,我有这样的方法:我可以在装饰器方法中获取变量的名称吗?

@httpPost("doAuth") 
@ValidateSize([{login: {min: 6}}, {password: {min: 6}}]) 
public async auth(@requestBody("login") login :string, @requestBody("password") pass :string, @response() response :express.Response){ 
    let user :UserData = await this.authService.auth(login, pass); 
    if(!user) return response.sendStatus(403); 
    return user; 
} 

的装饰自己:

export function ValidateSize(param :Object) { 
    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) { 
     return { 
      value: function (...args: any[]) { 
       //Here I need to get the variables login, pass that to check their length 

      } 
     }; 
    } 
} 

的问题是,args是具有数字索引的数组,但我需要通过名称获取参数。我怎样才能做到这一点?

+0

JS/TS没有命名参数,'login'将会是'args [0]'。 – jonrsharpe

回答

2

据我所知,TypeScript编译器不会发出带有变量名称的元数据。有努力改善打字稿编译器发出什么,所以装饰可用于获取有关代码的详细信息,如项目:

https://www.npmjs.com/package/awesome-metadata

但是,这个项目不会发出有关职能还没有更多的信息。

免责声明:我是这个项目的作者。

相关问题