为了转换您返回的纯 JavaScript 对象toObject
到一个类型化的对象中,你可能想使用class-transformer
库(该库是由Nest.js用于验证目的)。
Step 1.
首次安装class-validator
:
$ npm i --save class-transformer
Step 2.
安装后,假设User
类具有以下属性:
class User {
public id: any;
public email: string;
public password: number;
}
创建另一个类,名称为UserWithoutPassward
并导入Exclude
import { Exclude } from "class-transformer";
class UserWithoutPassword extends User {
@Exclude()
public password: number
}
We use Exclude
注释让class-transformer
知道我们想排除password
.
Step 3.
导入plainToClass
功能:
import { plainToClass } from "class-transformer";
回到你的代码:
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
方法将普通 JavaScript 对象转换为特定类的实例,接受以下参数:
- 要实例化的类
- 普通对象
有关图书馆的更多参考
希望能帮助到你。