# Fixing class-validator issues in a new Nest js project

*This weekend, I played a bit with this express-based node.js framework called **Nest**. But I'm a bit rusty when it comes to backend. I was coding in PHP...  years ago.
I am a React developer myself, and in my daily tasks, I write **Components** with **flow** typings : so everything in Nest - from classes to Typescript - is unusual to me.*


Let's remind first what is a DTO :

> A DTO (Data Transfer Object) is an object that defines how the data will be sent over the network. 

> It defines the shape of data for a specific case, such as creating an user:
> ```
CreateuserDto {
    name: 'john',
    password: 'isthissecureENOUGH??123'
}
> ``` 
>  Or updating the status of a shipping:
> ```
UpdateShippingStatusDto {
    status: 'ON_HOLD'
}
> ``` 

So, I love the concept of DTO and I was trying to validate it using `ValidationPipe`, just like [the doc](https://docs.nestjs.com/techniques/validation#auto-validation) says. It quickly went wrong:

## The "class-validator" package is missing. Please, make sure to install this library ($ npm install class-validator) to take advantage of ValidationPipe. 

![CleanShot 2020-04-05 at 15.44.34.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1586094310885/WYdLgXJ0t.png)

Oh. I thought it would work out of the box since ValidationPipe comes from `@nest/common`, but nevermind, the fix is easy :

```
npm install class-validator
``` 

No more errors in my console ! I carried on and sent a POST request on my endpoint...

## Nest: No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.

This one made me crazy. Should I install class-validator as a peer dependency ? Is it a problem in the yarn.lock or in package.json ?

Not at all ! It turned out that my DTO had _**zero**_ validation rules !

It's that simple : if you get a `No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.` when using `ValidationPipe`, triple-check that you have at least one validation rule.

For example:
```
import { IsNotEmpty } from "class-validator";

export class CreateUserDto {
    @IsNotEmpty()
    firstName: string;
    lastName: string;
}
```

[This stackoverflow comment](https://stackoverflow.com/a/55491966) saved the day. Thanks !

