MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Typescript Mongoose ignoruje pewne pola w wynikach zapytania w bezpieczny sposób

W celu przekształcenia zwykłego obiektu JavaScript zwróconego przez toObject do wpisanego obiektu, możesz chcieć użyć class-transformer biblioteka (biblioteka jest zalecana przez Nest.js do celów walidacji).

Krok 1.

Najpierw zainstaluj class-validator :

$ npm i --save class-transformer

Krok 2.

Po zainstalowaniu, zakładając, że User klasa ma następujące właściwości:

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

Utwórz inną klasę o nazwie UserWithoutPassward i zaimportuj Exclude

import { Exclude } from "class-transformer";

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

Używamy Exclude adnotacja pozwalająca class-transformer wiesz, że chcielibyśmy wykluczyć password .

Krok 3.

zaimportuj plainToClass funkcja:

import { plainToClass } from "class-transformer";

I wracając do kodu:

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 metoda przekształca zwykły obiekt javascript w instancję określonej klasy, przyjmując następujące parametry:

  1. Klasa do utworzenia instancji
  2. zwykły obiekt

Dalsze informacje o bibliotece

Mam nadzieję, że to pomoże.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. zbiorcza aktualizacja nodejs mongoose

  2. mongodb repliceset nowy element członkowski nie pokazuje prawidłowego użycia dysku w EC2

  3. Wstaw osadzony dokument do nowego pola w dokumencie mongodb

  4. MongoDB $abs

  5. Najlepszy język programowania do implementacji algorytmu DBSCAN odpytującego bazę danych MongoDB?