3 回答
TA贡献1784条经验 获得超2个赞
您可以将此部分添加到您的实体中:
fullName: string; // just define a property to use it in afterLoad method
@AfterLoad() // this method will be called on each entity query
afterLoad() {
this.fullName = `${this. firstName} ${this.lastName}`;
}
TA贡献1860条经验 获得超8个赞
@Entity()
export class User {
@PrimaryGeneratedColumn()
id!: number;
@Column({
type: 'varchar',
})
firstName: string;
@Column({
type: 'varchar',
})
lastName: string;
@Expose()
public get fullName() {
return `${this.firstName} ${this.lastName}`;
}
}
执行上述操作时,数据库不会将 fullName 值存储在列中。相反,它是在每次访问时即时计算的。
TA贡献1875条经验 获得超5个赞
您可以创建一个代表最终数据的类型,例如:
type CustomUser = {
id: number;
firstName: string;
lastName: string;
fullName: string;
}
之后,让您的查询返回此类型
return getManager()
.createQueryBuilder(User, 'user')
.select('user.id', 'id')
.select('user.firstName', 'firstName')
.addSelect('user.lastName', 'lastName')
.addSelect('CONCAT(firstName, ' ', lastName', 'fullName')
.getRawMany();
// getRawMany() if you want to fetch many records or getRawOne()
如果您只需要所有用户的 fullName 列,您可以尝试:
const { fullName } = await getManager()
.createQueryBuilder(User, 'user').select('CONCAT(firstName, ' ',
lastName', 'fullName').getRawMany();
return fullName;
添加回答
举报