после документов , если я хочу добавить пользовательский столбец в выборку, например."сумма (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'
}
]
спасибо заранее