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

0xb*_*eny 2 postgresql node.js typescript typeorm nestjs

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

@Entity()
export class User {

@PrimaryGeneratedColumn()
id: number;

@Column()
name: string;

@Column()
password: string;
}
Run Code Online (Sandbox Code Playgroud)

我在这里不需要密码,因为我想返回客户端:

const user = await User.find({where:{name:"test"}})
Run Code Online (Sandbox Code Playgroud)

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

const user = await User.findOne({where:{name:"test"}})
user.password="password";
await user.save()
Run Code Online (Sandbox Code Playgroud)

有 Find、FindAndCount 甚至 FindOne 方法的解决方案吗?

我应该怎么做?

Rah*_*rma 7

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

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

@Entity()
export class User {

  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column({select: false})
  password: string;
}
Run Code Online (Sandbox Code Playgroud)

这样,如果您这样做,您将无法从模型中获取密码字段find。您必须明确addSelect使用QueryBuilder.

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