Chcete-li transformovat váš prostý objekt JavaScript vrácený toObject
do zadaného objektu, možná budete chtít použít class-transformer
knihovna (knihovnu doporučuje Nest.js
pro účely ověření).
Krok 1.
Nejprve nainstalujte class-validator
:
$ npm i --save class-transformer
Krok 2.
Po instalaci, za předpokladu User
třída má následující vlastnosti:
class User {
public id: any;
public email: string;
public password: number;
}
Vytvořte další třídu s názvem UserWithoutPassward
a importujte Exclude
import { Exclude } from "class-transformer";
class UserWithoutPassword extends User {
@Exclude()
public password: number
}
Používáme Exclude
anotace nechat class-transformer
víme, že bychom chtěli vyloučit password
.
Krok 3.
importujte plainToClass
funkce:
import { plainToClass } from "class-transformer";
A zpět k vašemu kódu:
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
metoda transformuje prostý javascriptový objekt na instanci konkrétní třídy, přičemž přijímá následující parametry:
- Třída k vytvoření instance
- prostý objekt
Doufám, že to pomůže.