TypeORM добавить пользовательский столбец без потери дерева объектов - PullRequest
0 голосов
/ 24 сентября 2019

после документов , если я хочу добавить пользовательский столбец в выборку, например."сумма (a.id) как количество" я должен добавить ".getRaw ... ()", если у меня есть объединение (таблица от 1 до мая B), я теряю дерево объектов ([{id: 1, bs: [...]}])и результатом является необработанный список sql повторяющихся строк A ([{id: 1, b_id: 1}, {id: 1, b_id: 2}])

Вот как я делаю это в sequelize

    const user = await User.findOne({
      attributes: ['id', [Sequelize.fn('COUNT', Sequelize.col('id')), 'no_hats']],
      include: [
        {
          model: UserKey,
          as: 'keys',
          attributes: ['id']
        }
      ],
      where: {
        email: 'xxx'
      },
      group: ['id']
    });

, и результат - это то, что я ожидал

{
 id: 'be14f8a0-b3c7-11e9-91c7-47a1f55db49b',
 no_hats: 1,
 keys: [ [UserKey], [UserKey] ] 
}

Когда я делаю это с помощью typeorm

    const user = await userRepo
      .createQueryBuilder('u')
      .select('u.id')
      .addSelect('COUNT(u.id)', 'no_hats')
      .addSelect('keys.id')
      .where('u.email = :email', { email: 'xxx' })
      .leftJoin('u.userKeys', 'keys')
      .groupBy('u.id')
      .addGroupBy('keys.id')
      .getRawMany();

и результат:

[
  {
        u_id: 'be14f8a0-b3c7-11e9-91c7-47a1f55db49b',
        keys_id: '29996d0f-beb4-48e9-bd5b-596bc255de0c',
        no_hats: '1' 
  },
  {
        u_id: 'be14f8a0-b3c7-11e9-91c7-47a1f55db49b',
        keys_id: '47b03fe8-20fc-4322-99a0-3ecb5223b00f',
        no_hats: '1' 
  }
]

спасибо заранее

...