In the nest.js application on controller level I have to validate DTO.
I've faced with difficulty to check if item is not null (request should be rejected if any list item is null
or undefined
)
Code bellow demonstrates my configured verifications.
import { ArrayMinSize, IsArray } from 'class-validator'
export class ReminderPayload {
// ...
@IsArray()
@ArrayMinSize(1)
recipients: string[]
}
Question
- I'm looking for help to reject requests with body data like
{
"recipients": [
null
]
}
- How to validate if array items are
string
only (it should reject handling if object is in the array item position)?
P.S.
'class-validator'
injected successfully, and it produces some validation results for my API.
CodePudding user response:
You need to tell class-validator to run the validations on each
item of the array. Change your payload DTO to the following:
import { ArrayMinSize, IsArray, IsString } from 'class-validator';
export class ReminderPayloadDto {
// ...
@IsArray()
// "each" tells class-validator to run the validation on each item of the array
@IsString({ each: true })
@ArrayMinSize(1)
recipients: string[];
}
Link to the docs on this.