node.js - Hur man utesluter en kolumn från en typeorm-entitet och kan vara valfri att hämta kolumnen med hjälp av Find-metoden


import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";

@Entity()
export class User {

@PrimaryGeneratedColumn()
id: number;

@Column()
name: string;

@Column()
password: string;
}

jag vill inte ha lösenord här eftersom jag vill återgå till klienten:

const user = await User.find({where:{name:"test"}})

när jag vill ändra lösenord behöver jag lösenord:

const user = await User.findOne({where:{name:"test"}})
user.password="password";
await user.save()

Finns det någon lösning med metoderna Find, FindAndCount eller till och med FindOne?

Hur ska jag göra?

Svar #1

Du kan lägga till ett val på en select i din @Column-dekoratör inom entiteten så här:

import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";

@Entity()
export class User {

  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column({select: false})
  password: string;
}

På detta sätt kommer du inte att få lösenordsfältet från modellen om du gör find. Du måste uttryckligen använda addSelect med QueryBuilder.

Referens: https://typeorm.io/#/select-query-builder/hidden-columns

Svar #2

Om du inte vill tillämpa select: false på kolumnen i entiteten, är det andra alternativet att selektivt ange kolumner i find-metoden som du bara behöver

this.ManagementUnitRepository.find({
  select: ["id", "name"]
});