To validate an array of objects using Class Validator in a Node.js application, you can create a validation class that corresponds to the structure of the objects in your array. You can then use Class Validator to validate each object in the array against this class. Here's a step-by-step guide:
1. **Install Dependencies**:
Ensure you have `class-validator` and `class-transformer` installed in your project.
```
npm install class-validator class-transformer
```
2. **Create a Validation Class**:
Create a class that represents the structure of the objects in your array. Decorate the class properties with validation decorators provided by Class Validator.
For example, if you have an array of objects with a `name` property that should be a string and an `age` property that should be a number:
```javascript
import { IsString, IsNumber } from 'class-validator';
class ArrayItem {
@IsString()
name: string;
@IsNumber()
age: number;
}
```
3. **Validate the Array**:
Write a function to validate the array of objects. You can use `validate` from `class-validator` along with `plainToClass` from `class-transformer` to convert the raw data to instances of the validation class.
```javascript
import { validate } from 'class-validator';
import { plainToClass } from 'class-transformer';
async function validateArrayOfObjects(data) {
// Convert the array of raw data to instances of the validation class
const items = plainToClass(ArrayItem, data);
// Validate each item
const validationErrors = await validate(items, { skipMissingProperties: true });
if (validationErrors.length > 0) {
// Handle validation errors
console.error(validationErrors);
}
return items;
}
```
- `skipMissingProperties` allows you to skip validation if a property is missing, which can be useful for optional fields.
4. **Usage**:
You can now use the `validateArrayOfObjects` function to validate your array of objects. Pass your array to the function, and it will return the validated array or handle validation errors.
```javascript
const data = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: '30' }, // Invalid age (should be a number)
];
validateArrayOfObjects(data)
.then(validatedData => {
// Use the validated data
console.log(validatedData);
})
.catch(error => {
// Handle validation errors
console.error(error);
});
```
This example demonstrates how to validate an array of objects using Class Validator. You can extend the validation class and customize validation rules based on your specific requirements.