TypeOrm多个内部联接

时间:2020-07-23 00:42:58

标签: node.js query-builder typeorm node-postgres

我试图确定用户是玩家还是所有者。 到目前为止,我可以使用内部联接检查其中之一。

一个游戏可以有多个玩家,并且只有一个拥有者(他们都可以定义为USER)

所以..这可以确定用户是否是玩家:

const userId = 25;
const gameId = 2;
const resutl = await this.gameRepository
  .createQueryBuilder('game')
  .select('game.id')
  .innerJoin('game.players', 'player', 'player.id = :playerId', {playerId: userId,})
  .where('game.id = :gameId', { gameId: gameId }).getOne()

但是我无法弄清楚,如何同时检查所有者...

我尝试过类似的事情:

const userId = 25;
const gameId = 2;
const resutl = await this.gameRepository
  .createQueryBuilder('game')
  .select('game.id')
  .innerJoin('game.players', 'player', 'player.id = :playerId', {playerId: userId,})
  .innerJoin('game.owner', 'owner', 'owner.id = :ownerId', {ownerId: ownerId,})
  .where('game.id = :gameId', { gameId: gameId }).getOne()

但是总是返回undefined ...(无) 也许我不需要另一个内部联接来检查..也许addSelect ...我不确定...一些帮助吗?

1 个答案:

答案 0 :(得分:0)

您是否在用户实体中创建了角色列?我建议定义一个角色列,并且该角色可以是所有者或角色,以便您可以轻松地创建if语句或授权中间件