Để 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.