如何在Nest.js中以多个@ManyToMany查询数据

时间:2019-03-10 13:11:17

标签: javascript node.js typescript nestjs typeorm

众所周知,使用relations可以查询具有关系ManyToMany的数据。但是如何在多个ManyToMany中进行查询?也许您很困惑,请让我向您解释。

@Entity()
export class Article {
  @ManyToMany(type => Classification, classification => classification.articles)
  classifications: Classification[];

  @ManyToMany(type => User, user => user.articles)
  users: User[];
}

@Entity()
export class Classification {
  @ManyToMany(type => Article, article => article.classifications)
  @JoinTable()
  articles: Article[];
}

@Entity()
export class User {
  @ManyToMany(type => Article, article => article.users)
  @JoinTable()
  articles: Article[];
}

现在我想使用classificationRepository来查询与Article相关的数据,而Article应该与User相关。

但是idk怎么做。

2 个答案:

答案 0 :(得分:1)

您可以将多个联接一起添加。首先,加入文章,然后为用户参考第二次加入的文章:

this.categoryRepository.createQueryBuilder('classification')
  .leftJoinAndSelect(
    'classification.articles',
    'article',)
  .leftJoinAndSelect(
    'article.users',
    'user')
  .where('article.id = :id', { id: '1' })
  .getMany();

答案 1 :(得分:0)

如果文章与类别具有双向的多对多关系,而您想获取该类别的文章。您可以加载类别中的文章,然后将其退回


const category = await this.categoryRepository.findOne(params.id, {
  relations: ["articles"]
});

return category.articles