联表查询

浅浅记录一下 nestjs 开发的联表查询

用户表和上传表,需求是获取用户列表时联表查询上传表的用户头像

async findAll(page: number, limit: number) {
  const list = await this.userRepository
    .createQueryBuilder('user')
    .select([
      'user_id',
      'name'
    ])
    .leftJoin(Upload, 'upload', 'upload.upload_id = user.avatar')
    .addSelect(['upload.filename as avatar'])
    .offset(limit * (page - 1))
    .limit(limit)
    .getRawMany()

  return {
    list
  }
}

没有用 @OneToOne 之类的表关系,因为好像数据库要多生成一个 ID 字段 ( ´_ゝ`)

这边我直接用了 leftJoin,指定了 Update 这个实体 (entity),拿到 upload.filename

需要注意的是 getMany 好像会返回空,需要用 getRawMany

而且分页的话需要用 offsetlimittakeskip 没效果

后言

请教一下各位大佬,如果用 @OneToOne 的话要不额外生成 ID 要怎么写

评论区域将在可见后加载…