W celu przekształcenia zwykłego obiektu JavaScript zwróconego przez toObject
do wpisanego obiektu, możesz chcieć użyć class-transformer
biblioteka (biblioteka jest zalecana przez Nest.js
do celów walidacji).
Krok 1.
Najpierw zainstaluj class-validator
:
$ npm i --save class-transformer
Krok 2.
Po zainstalowaniu, zakładając, że User
klasa ma następujące właściwości:
class User {
public id: any;
public email: string;
public password: number;
}
Utwórz inną klasę o nazwie UserWithoutPassward
i zaimportuj Exclude
import { Exclude } from "class-transformer";
class UserWithoutPassword extends User {
@Exclude()
public password: number
}
Używamy Exclude
adnotacja pozwalająca class-transformer
wiesz, że chcielibyśmy wykluczyć password
.
Krok 3.
zaimportuj plainToClass
funkcja:
import { plainToClass } from "class-transformer";
I wracając do kodu:
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 przekształca zwykły obiekt javascript w instancję określonej klasy, przyjmując następujące parametry:
- Klasa do utworzenia instancji
- zwykły obiekt
Dalsze informacje o bibliotece
Mam nadzieję, że to pomoże.