我想写一个可以检查查询中参数长度的装饰器,我有这个方法:
@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 :(得分:2)
据我所知,TypeScript编译器不会使用变量名称发出元数据。有些项目试图改进TypeScript编译器发出的内容,因此可以使用装饰器来获取有关代码的更多信息,例如:
https://www.npmjs.com/package/awesome-metadata
但是这个项目还没有发出关于功能的更多信息。
免责声明:我是这个项目的作者。