MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

TypeScript Mongoose mengabaikan bidang tertentu dalam hasil kueri jenis cara yang aman

Untuk mengubah objek JavaScript biasa Anda yang dikembalikan oleh toObject menjadi objek yang diketik, Anda mungkin ingin menggunakan class-transformer perpustakaan (perpustakaan direkomendasikan oleh Nest.js untuk tujuan validasi).

Langkah 1.

Pertama instal class-validator :

$ npm i --save class-transformer

Langkah 2.

Setelah diinstal, dengan asumsi User kelas memiliki properti berikut:

 class User {
     public id: any;
     public email: string;
     public password: number;
 }

Buat kelas lain bernama UserWithoutPassward dan impor Exclude

import { Exclude } from "class-transformer";

class UserWithoutPassword extends User {
    @Exclude()
    public password: number
}

Kami menggunakan Exclude anotasi untuk membiarkan class-transformer tahu kami ingin mengecualikan password .

Langkah 3.

impor plainToClass fungsi:

import { plainToClass } from "class-transformer";

Dan kembali ke kode Anda:

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 metode mengubah objek javascript biasa menjadi instance kelas tertentu, menerima parameter berikut:

  1. Kelas yang akan dibuat instance
  2. objek biasa

Referensi lebih lanjut tentang perpustakaan

Semoga membantu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengimpor koleksi mongo ke koleksi yang ada tanpa menimpanya

  2. MongoDB $trim

  3. Mengapa tanggal ISO di Mongodb ditampilkan satu hari lebih awal?

  4. Bagaimana saya bisa mengganti nama bidang untuk semua dokumen di MongoDB?

  5. Cara memfilter array dalam subdocument dengan MongoDB