MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Typescript Mongoose игнорира определено поле в резултата от заявката по безопасния начин

За да трансформирате вашия обикновен JavaScript обект, върнат от toObject във въведен обект, може да искате да използвате 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да преместя tailable курсор с awaitdata до края, така че просто да получавам нови актуализации

  2. Предупреждение при свързване към MongoDB с Node сървър

  3. Meteor актуализира ли версията на mongodb автоматично?

  4. MongoDB изберете къде в масива от _id?

  5. пропуснат брой 0 в агрегатна функция