Para transformar seu objeto JavaScript simples retornado por
toObject
em um objeto digitado, você pode querer usar class-transformer
biblioteca (a biblioteca é recomendada por Nest.js
para fins de validação). Etapa 1.
Primeiro instale o
class-validator
:$ npm i --save class-transformer
Etapa 2.
Uma vez instalado, assumindo
User
classe tem as seguintes propriedades: class User {
public id: any;
public email: string;
public password: number;
}
Crie outra classe chamada
UserWithoutPassward
e importe Exclude
import { Exclude } from "class-transformer";
class UserWithoutPassword extends User {
@Exclude()
public password: number
}
Usamos
Exclude
anotação para deixar class-transformer
sabemos que gostaríamos de excluir password
. Etapa 3.
importe o
plainToClass
função:import { plainToClass } from "class-transformer";
E voltando ao seu código:
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
O método transforma um objeto javascript simples em instância de classe específica, aceitando os seguintes parâmetros:- A classe a ser instanciada
- objeto simples
Mais referência sobre a biblioteca
Espero que ajude.