最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

找不到别名。也许你忘了加入它

运维笔记admin22浏览0评论

找不到别名。也许你忘了加入它

找不到别名。也许你忘了加入它

在我的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?
回答如下:

你必须首先注入Repository

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

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

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

评论列表(0)

  1. 暂无评论