Untuk mengubah objek JavaScript biasa Anda yang dikembalikan oleh toObject
menjadi objek yang diketik, Anda mungkin ingin menggunakan class-transformer
perpustakaan (perpustakaan direkomendasikan oleh Nest.js
untuk tujuan validasi).
Langkah 1.
Pertama instal class-validator
:
$ npm i --save class-transformer
Langkah 2.
Setelah diinstal, dengan asumsi User
kelas memiliki properti berikut:
class User {
public id: any;
public email: string;
public password: number;
}
Buat kelas lain bernama UserWithoutPassward
dan impor Exclude
import { Exclude } from "class-transformer";
class UserWithoutPassword extends User {
@Exclude()
public password: number
}
Kami menggunakan Exclude
anotasi untuk membiarkan class-transformer
tahu kami ingin mengecualikan password
.
Langkah 3.
impor plainToClass
fungsi:
import { plainToClass } from "class-transformer";
Dan kembali ke kode Anda:
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
metode mengubah objek javascript biasa menjadi instance kelas tertentu, menerima parameter berikut:
- Kelas yang akan dibuat instance
- objek biasa
Referensi lebih lanjut tentang perpustakaan
Semoga membantu.