简体   繁体   中英

Can I get the names of variables in the decorator method?

I want to write a decorator that could check the length of the parameters in the query, I have this method:

@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;
}

The decorator himself:

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

            }
        };
    }
}

The problem is that args is an array with numeric indices, but I need to get arguments by their names. How can I do that?

As far as I know, TypeScript compiler does not emit metadata with variable names. There are projects trying to improve what the TypeScript compiler emits so decorators can be used to get more information about the code, like:

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

But this project does not emit yet additional information about functions.

Disclaimer : I'm the author of this project.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM