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"]
});
