0

I need to create a validator that contains an array of objects, a string, and a number.

Here is a similar question I found:: Class-validator - validate array of objects

Below is how the data should be filtered... meaning these are the good parameters that I want to extract from the body of the request

{
"call_transfers": [
  {"bid":33,"bid_id":"1239dasdj8","carrier":"Jimmies pizza", "qualification_duration":222},
  {"bid":28,"bid_id":"3234sdfJIA","carrier":"Krusty crabs", "qualification_duration":22},
  {"bid":19,"bid_id":"9anHXawefa","carrier":"Bikiny bottom", "qualification_duration":33},
        ],
"ping_id": "adi2837dasdjc8",
"time" : 0.123      
}

I am creating the following request to test if the class validator is working as expected ::

{
"name" : "Juan",
"email": "[email protected]",
"token" : "1oap8X8ase@#*&",
"call_transfers": [
    {"bid":33,"bid_id":"1239dasdj8","carrier":"Jimmies pizza", "qualification_duration":222, "fakeParam":123},
    {"bid":28,"bid_id":"3234sdfJIA","carrier":"Krusty crabs", "qualification_duration":22, "fakeParam":123 },
    {"bid":19,"bid_id":"9anHXawefa","carrier":"Bikiny bottom", "qualification_duration":33, "fakeParam":123}
    ],
"ping_id": "adi2837dasdjc8",
"time" : 0.123,
"authParameters": [{"id":123,"type":"user","value":"chocolates"}]
}

However, I am not able to correctly filter the parameters I want!

This is the controller logic that I am using ::

    setFlagsOnBid(
        @Body('call_transfers') call_transfers: MediaAlphaResponseItem,
        @Body('ping_id') ping_id: MediaAlphaResponseItem,
        @Body('time') time: MediaAlphaResponseItem,
         
        ){
        const filteredData = { call_transfers , ping_id , time };
        return filteredData;
    
    }

this is the class validation that I am using::

export class MediaAlphaResponseItem {
    @ValidateNested({ each: true })
    @Type(() => MediaAlphaCallTransferItem)
    call_transfers: MediaAlphaCallTransferItem[];

    @IsString()
    ping_id:string;

    @IsNumber()
    time:number;

}


 class MediaAlphaCallTransferItem {

    @IsNumber()
    bid:number;

    @IsString()
    bid_id:string;

    @IsString()
    carrier:string;

    @IsNumber()
    qualification_duration:number;
}

This is the output in postman enter image description here

1
  • Still not clear what you want to achieve Commented Dec 8, 2022 at 5:16

1 Answer 1

0
setFlagsOnBid(@Body() filteredData: MediaAlphaResponseItem) {
  return filteredData;
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.