2

我想写一个可以检查查询中参数长度的装饰器,我有这个方法:

@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是一个带有数字索引的数组,但我需要通过它们的名称获取参数。我怎样才能做到这一点?

4

1 回答 1

3

据我所知,TypeScript 编译器不会发出带有变量名的元数据。有些项目试图改进 TypeScript 编译器发出的内容,以便可以使用装饰器来获取有关代码的更多信息,例如:

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

但是这个项目还没有发出关于函数的额外信息。

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

于 2017-09-09T14:17:27.957 回答