【问题标题】:alias was not found. Maybe you forget to join it找不到别名。也许你忘记加入它
【发布时间】:2019-07-07 05:04:09
【问题描述】:

在我的 nectjs 项目中,我使用的是 TypeORM,我有 2 个实体用户和帖子, 我想在他们之间建立关系

user.entity.ts

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ length: 50, unique: true })
  name: string;

  @OneToMany(type => Post, post => post.user)
  posts: Post[];
}

post.entity.ts

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

  @Column({ length: 30 })
  title: string;

  @ManyToOne(type => User, user => user.posts)
  user: User;
}

所以我想加入这些表格并按特定用户的标题获取帖子

const PostObject = await createQueryBuilder("post")
      .leftJoinAndSelect(
        "post.user",
        "user",
        "post.title = :title",
        { title: "title1" }
      )
      .where("user.id = :id", { id: id })
      .getOne();

但是当我运行项目并执行这个函数时,我得到了这个错误:

Error: "post" alias was not found. Maybe you forget to join it?

【问题讨论】:

    标签: javascript node.js typescript nestjs typeorm


    【解决方案1】:

    你必须先注入Repository

    constructor(
      @InjectRepository(Post) private readonly postRepository: Repository<Post>
    ) {
    }
    

    然后您可以通过传入别名为Post 实体创建QueryBuilder

    this.postRepository.createQueryBuilder('post')
    // ^^^^^^^^^^^^^^^^
       .leftJoinAndSelect(
         'post.user',
         'user',
         'post.title = :title',
         { title: 'title1' },
       )
       .where('user.id = :id', { id })
       .getOne();
    

    【讨论】:

      【解决方案2】:

      也可以像下面这样使用getRepository。

      const PostObject = await getRepository("post").createQueryBuilder("post")
            .leftJoinAndSelect(
              "post.user",
              "user",
              "post.title = :title",
              { title: "title1" }
            )
            .where("user.id = :id", { id: id })
            .getOne();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-21
        • 1970-01-01
        • 1970-01-01
        • 2010-09-30
        相关资源
        最近更新 更多