For example, we have a interface:
export interface Course {
_id: string;
seqNo: number;
url: string;
iconUrl: string;
courseListIcon: string;
description: string;
longDescription: string;
category: string;
lessonsCount: number;
promo: boolean;
}
We are using it with NestJS backend, in order to validate the request with meanful runtime error message, we can use class-validator package.
First we need to convert a interface to class:
export class Course {
_id: string;
seqNo: number;
url: string;
iconUrl: string;
courseListIcon: string;
description: string;
longDescription: string;
category: string;
lessonsCount: number;
promo: boolean;
}
Then add valdiations:
import { IsMongoId, IsString, IsBoolean, IsInt } from "class-validator";
export class Course {
@IsString()
@IsMongoId()
_id: string;
@IsInt({ message: "seqNo must be numeric" })
seqNo: number;
// always false, no need to be always applied the rule
@IsString({ always: false }) url: string;
@IsString() iconUrl: string;
@IsString() courseListIcon: string;
@IsString() description: string;
@IsString() longDescription: string;
@IsString() category: string;
@IsInt() lessonsCount: number;
@IsBoolean() promo: boolean;
}