Per trasformare il tuo semplice oggetto JavaScript restituito da toObject
in un oggetto digitato, potresti voler usare class-transformer
libreria (la libreria è consigliata da Nest.js
ai fini della convalida).
Passaggio 1.
Prima installa class-validator
:
$ npm i --save class-transformer
Passaggio 2.
Una volta installato, assumendo User
classe ha le seguenti proprietà:
class User {
public id: any;
public email: string;
public password: number;
}
Crea un'altra classe denominata UserWithoutPassward
e importa Exclude
import { Exclude } from "class-transformer";
class UserWithoutPassword extends User {
@Exclude()
public password: number
}
Usiamo Exclude
annotazione per lasciare class-transformer
sappiamo che vorremmo escludere password
.
Passaggio 3.
importa il plainToClass
funzione:
import { plainToClass } from "class-transformer";
E torniamo al tuo codice:
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
trasforma un semplice oggetto javascript in un'istanza di classe specifica, accettando i seguenti parametri:
- La classe di cui creare un'istanza
- oggetto semplice
Ulteriori riferimenti sulla libreria
Spero che aiuti.