Afin de transformer votre objet JavaScript brut renvoyé par toObject
dans un objet typé, vous pouvez utiliser class-transformer
bibliothèque (la bibliothèque est recommandée par Nest.js
à des fins de validation).
Étape 1.
Installez d'abord class-validator
:
$ npm i --save class-transformer
Étape 2.
Une fois installé, en supposant User
classe a les propriétés suivantes :
class User {
public id: any;
public email: string;
public password: number;
}
Créez une autre classe nommée UserWithoutPassward
et importez Exclude
import { Exclude } from "class-transformer";
class UserWithoutPassword extends User {
@Exclude()
public password: number
}
Nous utilisons Exclude
annotation pour laisser class-transformer
savons que nous aimerions exclure password
.
Étape 3.
importer le plainToClass
fonction :
import { plainToClass } from "class-transformer";
Et revenons à votre code :
async validateUser(email: string, password: string): Promise<UserWithoutPassword | null> {
const user = await this.usersService.findOne({ email });
if (user && await compare(password, user.password))
{
return plainToClass(UserWithoutPassword, user.toObject());
}
return null;
}
plainToClass
transforme un objet javascript simple en instance d'une classe spécifique, en acceptant les paramètres suivants :
- La classe à instancier
- objet ordinaire
Autre référence sur la bibliothèque
J'espère que ça aide.