Để chuyển đổi đối tượng JavaScript thuần túy của bạn được trả về bởi toObject
vào một đối tượng đã nhập, bạn có thể muốn sử dụng class-transformer
thư viện (thư viện được khuyến nghị bởi Nest.js
cho mục đích xác nhận).
Bước 1.
Trước tiên hãy cài đặt class-validator
:
$ npm i --save class-transformer
Bước 2.
Sau khi cài đặt, giả sử User
lớp có các thuộc tính sau:
class User {
public id: any;
public email: string;
public password: number;
}
Tạo lớp antoher có tên UserWithoutPassward
và nhập Exclude
import { Exclude } from "class-transformer";
class UserWithoutPassword extends User {
@Exclude()
public password: number
}
Chúng tôi sử dụng Exclude
chú thích để cho class-transformer
biết rằng chúng tôi muốn loại trừ password
.
Bước 3.
nhập plainToClass
chức năng:
import { plainToClass } from "class-transformer";
Và quay lại mã của bạn:
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
phương thức chuyển đổi một đối tượng javascript thuần thành phiên bản của lớp cụ thể, chấp nhận các tham số sau:
- Lớp cần khởi tạo
- đối tượng đơn giản
Hy vọng nó sẽ hữu ích.