Typeorm - 转换响应

问题描述

我在 nestJS 中使用 Typeorm,有没有办法将动态值传入列转换器?

我有这个帖子实体文件

export class Post extends EntityBase {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToOne(() => PostType,(postType) => postType.id)
  postType: PostType;

  @Column()
  name: string;

  @Column()
  dateStart: Date;

  @Column()
  dateEnd: Date;

  @Column({ select: false })
  status: number;

  @Column({
    transformer: {
      to(n) {
        return n;
      },from(n) {
        return configService.getCDNUrl() + n;
      },},})
  imageList: string;

  @Column()
  slug: string;
}

我正在等待使用完整的 CDN URL 为图像添加前缀,目前,这会正确附加 CDN URL,因为它是一个静态值,因此我从 configservice 中提取该值,因此我确实得到了 https://mycdn.com/image.jpg

但是,我的图像存储在每个客户端的文件夹中,所以我实际上需要它https://mycdn.com/{{clientId}}/image.jpg - 对 API 的每个请求都包含 clientId,有没有办法将此信息传递到实体或存储库中以进行转换响应(或者我们可以从 postType.clientId 中选择 clientId)还是必须在服务中手动转换它?

解决方法

对于以后看这个的人,我发现我可以使用@AfterLoad() 装饰器来更新值,甚至可以访问相关实体

@AfterLoad()
  setCdnUrl() {
    this.imageList = `${configService.getCDNUrl()}${
      this.postType.clientId
    }/content/${this.imageList}`;
  }