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": "jcasdasda@gmail.com",
"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;
}