Closed fdorantesm closed 1 month ago
Property name is overwritten to "anonymous" if you define a property called "named" in a DTO class.
Minimal code-snippet showcasing the problem
export class UpdateChallengeDto { @ApiPropertyOptional({ example: 'April 2024' }) @IsString() @IsDefined() public readonly name: string; @ApiPropertyOptional({ example: 450 }) @Min(0) @IsOptional() @Type(() => Number) public readonly price?: number; @ApiPropertyOptional({ example: 'f7e7b1e4-9b0b-4b4b-8d2c-6e1f4d4c3d3d' }) @IsString() @IsUUID() @IsOptional() public readonly playlistId?: string; @ApiPropertyOptional({ example: true }) @IsBoolean() @IsOptional() @Type(() => Boolean) public readonly isActive?: boolean; @ApiPropertyOptional({ example: '2024-04-01T00:00:00.000Z' }) @IsDate() @Type(() => Date) @IsOptional() public readonly startsAt?: Date; @ApiPropertyOptional({ example: '2024-04-30T23:59:59.999Z' }) @IsDate() @Type(() => Date) @IsOptional() public readonly endsAt?: Date; }
The classToPlain method will return an object with the original "name" value.
classToPlain
The classToPlain method is returning the constructor name "anonymous".
I'm using nestjs Versions from package.json
{ "class-transformer": "^0.5.1", "class-validator": "^0.14.1" }
{ "name": "chanchito", "version": "1.0.0", "description": "An API using NestJS", "dependencies": { "@codegenie/serverless-express": "^4.14.1", "@nestjs/axios": "^3.0.0", "@nestjs/common": "^10.1.3", "@nestjs/config": "^3.0.0", "@nestjs/core": "^10.1.3", "@nestjs/cqrs": "^10.2.5", "@nestjs/jwt": "^10.1.0", "@nestjs/mongoose": "^10.0.1", "@nestjs/passport": "^10.0.0", "@nestjs/platform-express": "^10.1.3", "@nestjs/swagger": "^7.1.8", "@pluzchat/nestjs-ses": "^1.0.2", "@supercharge/promise-pool": "^2.4.0", "aws-lambda": "^1.0.7", "aws-sdk": "^2.1614.0", "axios": "^1.4.0", "bcryptjs": "^2.4.3", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", "connection-string": "^4.3.5", "cookie-parser": "^1.4.6", "express-rate-limit": "^6.5.2", "helmet": "^5.1.1", "http-status-codes": "^2.2.0", "joi": "^17.6.0", "json-logger-service": "^9.0.1", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.21", "luxon": "^3.0.4", "moment": "^2.29.4", "moment-timezone": "^0.5.37", "mongoose": "^6.5.2", "mongoose-anonymoose": "^1.0.0", "mongoose-paginate": "^5.0.3", "mongoose-query-parser-fork": "^1.3.4", "nedb-promises": "^6.2.3", "nestjs-s3": "^1.0.1", "nestjs-stripe": "^1.0.0", "nestjs-uuid": "^0.1.4", "passport": "^0.6.0", "passport-cookie": "^1.0.9", "passport-custom": "^1.1.1", "passport-jwt": "^4.0.0", "pug": "^3.0.2", "ramda": "^0.28.0", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.5.6", "serverless": "^3.38.0", "serverless-offline": "^13.5.0", "slug": "^6.0.0", "stripe": "^11.12.0", "utility": "^1.17.0", "uuid": "^9.0.1" }, "devDependencies": { "@nestjs/cli": "^10.1.12", "@nestjs/schematics": "^10.0.2", "@nestjs/testing": "^10.1.3", "@types/aws-sdk": "^2.7.0", "@types/cookie-parser": "^1.4.3", "@types/express": "^4.17.13", "@types/jest": "27.0.2", "@types/luxon": "^3.0.1", "@types/mongoose-paginate": "^5.0.12", "@types/multer": "^1.4.7", "@types/node": "18.17.0", "@types/pug": "^2.0.6", "@types/ramda": "^0.28.23", "@types/slug": "^5.0.3", "@types/supertest": "^2.0.11", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "cross-var": "^1.1.0", "dotenv": "^16.0.3", "eslint": "^8.0.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "husky": "^7.0.4", "jest": "^27.2.5", "npm-run-all": "^4.1.5", "prettier": "^2.3.2", "serverless-dotenv-plugin": "^6.0.0", "source-map-support": "^0.5.20", "supertest": "^6.1.3", "ts-jest": "^27.0.3", "ts-loader": "^9.2.3", "ts-node": "^10.0.0", "ts-unused-exports": "^9.0.4", "tsconfig-paths": "^3.10.1", "typescript": "^4.3.5" } }
I was using a transformation flag in the ValidationPipe.
ValidationPipe
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Description
Property name is overwritten to "anonymous" if you define a property called "named" in a DTO class.
Minimal code-snippet showcasing the problem
Expected behavior
The
classToPlain
method will return an object with the original "name" value.Actual behavior
The
classToPlain
method is returning the constructor name "anonymous".Context
I'm using nestjs Versions from package.json