Om uw gewone JavaScript-object te transformeren dat wordt geretourneerd door toObject
in een getypt object, wilt u misschien class-transformer
. gebruiken bibliotheek (de bibliotheek wordt aanbevolen door Nest.js
voor validatiedoeleinden).
Stap 1.
Installeer eerst class-validator
:
$ npm i --save class-transformer
Stap 2.
Eenmaal geïnstalleerd, ervan uitgaande dat User
class heeft de volgende eigenschappen:
class User {
public id: any;
public email: string;
public password: number;
}
Maak een andere klasse met de naam UserWithoutPassward
en importeer Exclude
import { Exclude } from "class-transformer";
class UserWithoutPassword extends User {
@Exclude()
public password: number
}
We gebruiken Exclude
annotatie om class-transformer
. te laten weet dat we password
willen uitsluiten .
Stap 3.
importeer de plainToClass
functie:
import { plainToClass } from "class-transformer";
En terug naar je 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
methode transformeert een gewoon javascript-object naar een specifieke klasse, waarbij de volgende parameters worden geaccepteerd:
- De klas die moet worden geïnstantieerd
- gewoon object
Verdere referentie over de bibliotheek
Ik hoop dat het helpt.