Skip to content

fix: incorrect property name in validation messages when using @Expose() #1705

Open
@prdepyadv

Description

@prdepyadv

Description

When using the @expose decorator from class-transformer in combination with the @IsString decorator from class-validator, the validation message returns the original property name instead of the exposed name.

Lets take this below example:

import { Expose } from 'class-transformer';
import { IsString } from 'class-validator';

export class User {
  @Expose({ name: 'uid' })
  id: number;

  firstName: string;

  lastName: string;

  @Expose({ name: 'secretKey' })
  @IsString()
  password: string;
}

If I pass a number or an invalid value to secretKey, the validation message returned is 'password must be a string'. However, it should be 'secretKey must be a string' based on the exposed name.

Expected behavior

The validation message should use the exposed name defined by the @expose decorator. For example, if the secretKey field is incorrectly set, the error message should be 'secretKey must be a string'.

Actual behavior

The validation message returns the original property name. In the provided example, it returns 'password must be a string' instead of 'secretKey must be a string'.

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: needs triageIssues which needs to be reproduced to be verified report.type: fixIssues describing a broken feature.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions