typeorm select 嵌套连接关系字段

typeorm select nested join relation fields

typeorm 在使用 getOne 方法时没有给嵌套连接关系选择的数据

this.repo.createQueryBuilder("po")
    .leftJoinAndSelect("po.purchaseOrderItems","poi")
    .leftJoinAndSelect("poi.items","item")
    .leftJoinAndSelect("po.center","center")
    .leftJoinAndSelect("po.vendor","vendor")
    .where(data)
    .select([
        "po.id",
        "item.name",
    ])
    .getOne()

结果为

{
  id:number
}

预期输出是

{
  id:number,
  purchaseOrderItems:[{
    items:{
     name:string
    }
  }]
}

和我执行的一样

this.repo.createQueryBuilder("po")
    .leftJoinAndSelect("po.purchaseOrderItems","poi")
    .leftJoinAndSelect("poi.items","item")
    .leftJoinAndSelect("po.center","center")
    .leftJoinAndSelect("po.vendor","vendor")
    .where(data)
    .getOne()

我得到的结果

{
  id:number,
  purchaseOrderItems:[{
    items:{
       name:string
    }
  }]
}

当您使用select时,您必须在字段中添加关联关系列。你可以试试这个

this.repo.createQueryBuilder("po")
    .leftJoinAndSelect("po.purchaseOrderItems","poi")
    .leftJoinAndSelect("poi.items","item")
    .leftJoinAndSelect("po.center","center")
    .leftJoinAndSelect("po.vendor","vendor")
    .where(data)
    .select([
        "po.id",
        "poi", //added
        "item.name",
    ])
    .getOne()