如何从不是数据库列的实体中另外返回字段?

我有一个具有多个带有注释的字段的实体,@Column如下所示:


@Entity()

export class User {

  @PrimaryGeneratedColumn()

  id!: number;


  @Column({

    type: 'varchar',

  })

  firstName: string;


  @Column({

    type: 'varchar',

  })

  lastName: string;

}

当保存后我返回保存的对象时,他只返回我这三个字段,但我想返回另一个字段:fullName但我不想将其保存在数据库中


所以,我尝试在 eneity 中添加这个字段:


fullName: string;

但是当我映射这个字段 mytext并返回这个对象,然后返回我全部但不返回我的 fullName 时,有人可以告诉我如何从不是数据库中的列的实体返回另外的字段吗?


慕沐林林
浏览 145回答 3
3回答

一只斗牛犬

您可以将此部分添加到您的实体中:fullName: string; // just define a property to use it in afterLoad method@AfterLoad() // this method will be called on each entity queryafterLoad() {    this.fullName = `${this. firstName} ${this.lastName}`;}

桃花长相依

@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 值存储在列中。相反,它是在每次访问时即时计算的。

慕田峪4524236

您可以创建一个代表最终数据的类型,例如: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;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript