sql >> データベース >  >> NoSQL >> MongoDB

Typescript Mongooseは、クエリ結果の特定のフィールドをタイプセーフな方法で無視します

    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オブジェクトを特定のクラスのインスタンスに変換し、次のパラメーターを受け入れます。

    1. インスタンス化するクラス
    2. プレーンオブジェクト

    ライブラリに関する詳細情報

    お役に立てば幸いです。




    1. データベース内のユーザーから情報を取得する

    2. Mongo DBは、任意の値を持つフィールド名で検索します

    3. MongoDB$text検索でANDとNOTを行う方法

    4. MongoDB $ objectToArray