toObject
によって返されるプレーンなJavaScriptオブジェクトを変換するため 型付きオブジェクトに、class-transformer
を使用することをお勧めします ライブラリ(ライブラリは Nest.js
によって推奨されています
検証目的で)。
ステップ1。
最初にclass-validator
をインストールします :
$ npm i --save class-transformer
ステップ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
}
Exclude
を使用します class-transformer
を許可するアノテーション password
を除外したいことを知っています 。
ステップ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オブジェクトを特定のクラスのインスタンスに変換し、次のパラメーターを受け入れます。
- インスタンス化するクラス
- プレーンオブジェクト
お役に立てば幸いです。