sql >> Databáze >  >> NoSQL >> MongoDB

Typescript Mongoose ignoruje určité pole ve výsledku dotazu způsobem bezpečným pro typ

Chcete-li transformovat váš prostý objekt JavaScript vrácený toObject do zadaného objektu, možná budete chtít použít class-transformer knihovna (knihovnu doporučuje Nest.js pro účely ověření).

Krok 1.

Nejprve nainstalujte class-validator :

$ npm i --save class-transformer

Krok 2.

Po instalaci, za předpokladu User třída má následující vlastnosti:

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

Vytvořte další třídu s názvem UserWithoutPassward a importujte Exclude

import { Exclude } from "class-transformer";

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

Používáme Exclude anotace nechat class-transformer víme, že bychom chtěli vyloučit password .

Krok 3.

importujte plainToClass funkce:

import { plainToClass } from "class-transformer";

A zpět k vašemu kódu:

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 transformuje prostý javascriptový objekt na instanci konkrétní třídy, přičemž přijímá následující parametry:

  1. Třída k vytvoření instance
  2. prostý objekt

Další informace o knihovně

Doufám, že to pomůže.




  1. vícenásobný součet/počet na mongodb (součet pohlaví a součet všech výsledků)

  2. Jak přejmenovat/alias pole (pole) při načítání z MongoDB pomocí dotazu pomocí nativní jednotky MongoDB-Node.JS?

  3. Jak implementovat Hash Map na disku pomocí MongoDB-Java

  4. MongoDB:Získání Client Cursor::yield nemůže odemknout b/c upozornění na rekurzivní zámek při použití findAndModify ve dvou instancích procesu