sql >> Database >  >> NoSQL >> MongoDB

Typescript Mongoose negeert een bepaald veld in het zoekresultaat op de veilige manier

Om uw gewone JavaScript-object te transformeren dat wordt geretourneerd door toObject in een getypt object, wilt u misschien class-transformer . gebruiken bibliotheek (de bibliotheek wordt aanbevolen door Nest.js voor validatiedoeleinden).

Stap 1.

Installeer eerst class-validator :

$ npm i --save class-transformer

Stap 2.

Eenmaal geïnstalleerd, ervan uitgaande dat User class heeft de volgende eigenschappen:

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

Maak een andere klasse met de naam UserWithoutPassward en importeer Exclude

import { Exclude } from "class-transformer";

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

We gebruiken Exclude annotatie om class-transformer . te laten weet dat we password willen uitsluiten .

Stap 3.

importeer de plainToClass functie:

import { plainToClass } from "class-transformer";

En terug naar je code:

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 methode transformeert een gewoon javascript-object naar een specifieke klasse, waarbij de volgende parameters worden geaccepteerd:

  1. De klas die moet worden geïnstantieerd
  2. gewoon object

Verdere referentie over de bibliotheek

Ik hoop dat het helpt.




  1. MongoDB:$sample gebruiken met C#-stuurprogramma

  2. Hoe stel je Mongo-replicaset op Kubernetes in?

  3. hoe mongoDB met de server te verbinden?

  4. php mongodb zoeken en sorteren in volledige tekst