MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Typecript Mongoose bỏ qua trường nhất định trong kết quả truy vấn theo cách an toàn

Để chuyển đổi đối tượng JavaScript thuần túy của bạn được trả về bởi toObject vào một đối tượng đã nhập, bạn có thể muốn sử dụng class-transformer thư viện (thư viện được khuyến nghị bởi Nest.js cho mục đích xác nhận).

Bước 1.

Trước tiên hãy cài đặt class-validator :

$ npm i --save class-transformer

Bước 2.

Sau khi cài đặt, giả sử User lớp có các thuộc tính sau:

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

Tạo lớp antoher có tên UserWithoutPassward và nhập Exclude

import { Exclude } from "class-transformer";

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

Chúng tôi sử dụng Exclude chú thích để cho class-transformer biết rằng chúng tôi muốn loại trừ password .

Bước 3.

nhập plainToClass chức năng:

import { plainToClass } from "class-transformer";

Và quay lại mã của bạn:

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 phương thức chuyển đổi một đối tượng javascript thuần thành phiên bản của lớp cụ thể, chấp nhận các tham số sau:

  1. Lớp cần khởi tạo
  2. đối tượng đơn giản

Tham khảo thêm về thư viện

Hy vọng nó sẽ hữu ích.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tập bản sao khu vực MongoDb - nút chính trong mỗi khu vực?

  2. Cấu trúc cơ sở dữ liệu MongoDB và Trợ giúp về các phương pháp hay nhất

  3. Truy vấn MongoDB theo giá trị khi khóa mẹ không xác định

  4. Mongoose:đường dẫn lỗi xác thực là bắt buộc

  5. Chọn Phần tử Mảng Khớp và Trả về Các Trường đã Chọn