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オブジェクトを特定のクラスのインスタンスに変換し、次のパラメーターを受け入れます。
- インスタンス化するクラス
- プレーンオブジェクト
お役に立てば幸いです。