如何从 typeorm 实体中排除列,并且可以选择使用 Find 方法获取该列

How to exclude a column from typeorm entity and could be optional to get the column using Find method

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

@Entity()
export class User {

@PrimaryGeneratedColumn()
id: number;

@Column()
name: string;

@Column()
password: string;
}

我不想在这里输入密码,因为我想return给客户:

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

当我想修改密码时,我需要密码:

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

是否有使用 Find、FindAndCount 甚至 FindOne 方法的解决方案?

我该怎么办?

您可以在实体内的 @Column 装饰器中添加一个 select 选项,如下所示:

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

@Entity()
export class User {

  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

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

这样,如果您这样做 find,您将不会从模型中获取密码字段。您必须使用 QueryBuilder.

明确地执行 addSelect

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

如果您不想将 select: false 应用到实体中的列,则其他选项是仅在您需要的查找方法中选择性地键入列

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