为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕沐林林 2023-07-14 15:49:58
我有一个具有多个带有注释的字段的实体,@Column如下所示:@Entity()export class User {  @PrimaryGeneratedColumn()  id!: number;  @Column({    type: 'varchar',  })  firstName: string;  @Column({    type: 'varchar',  })  lastName: string;}当保存后我返回保存的对象时,他只返回我这三个字段,但我想返回另一个字段:fullName但我不想将其保存在数据库中所以,我尝试在 eneity 中添加这个字段:fullName: string;但是当我映射这个字段 mytext并返回这个对象,然后返回我全部但不返回我的 fullName 时,有人可以告诉我如何从不是数据库中的列的实体返回另外的字段吗?
查看完整描述

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}`;

}


查看完整回答
反对 回复 2023-07-14
?
桃花长相依

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


查看完整回答
反对 回复 2023-07-14
?
慕田峪4524236

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;


查看完整回答
反对 回复 2023-07-14
  • 3 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信