Para transformar su objeto JavaScript simple devuelto por toObject
en un objeto escrito, es posible que desee utilizar class-transformer
biblioteca (la biblioteca es recomendada por Nest.js
con fines de validación).
Paso 1.
Primero instala class-validator
:
$ npm i --save class-transformer
Paso 2.
Una vez instalado, asumiendo User
clase tiene las siguientes propiedades:
class User {
public id: any;
public email: string;
public password: number;
}
Cree otra clase llamada UserWithoutPassward
e importar Exclude
import { Exclude } from "class-transformer";
class UserWithoutPassword extends User {
@Exclude()
public password: number
}
Usamos Exclude
anotación para permitir que class-transformer
sabemos que nos gustaría excluir password
.
Paso 3.
importar el plainToClass
función:
import { plainToClass } from "class-transformer";
Y de vuelta a su 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
El método transforma un objeto javascript simple en una instancia de una clase específica, aceptando los siguientes parámetros:
- La clase a instanciar
- objeto simple
Referencia adicional sobre la biblioteca
Espero que ayude.