如何从 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
如果您不想将 select: false
应用到实体中的列,则其他选项是仅在您需要的查找方法中选择性地键入列
this.ManagementUnitRepository.find({
select: ["id", "name"]
});
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
如果您不想将 select: false
应用到实体中的列,则其他选项是仅在您需要的查找方法中选择性地键入列
this.ManagementUnitRepository.find({
select: ["id", "name"]
});