Я делаю запрос с Knex (PostgreSQL):
knex('foos')
.select(columnsThatAreAMixOfFooAndBarColumns)
.leftJoin('bars', 'foos.bar_id', 'bars.id')
.where({ 'foos.id': id })
Когда я возвращаю результаты, я не возвращаю [{foo_id: 1, bar_id: 2, ...
. Вместо этого я получаю обратно [{ id: 1, ...
.
Что удивительно, так это то, что Knex создает правильный запрос: если я войду в него, я увижу SELECT "foos"."id", "bars"."id", ...
. Но по какой-то странной причине я не могу понять, Knex решает объединить все полученные столбцы вместе, поэтому я теряю bars.id
полностью и foos.id
переименовывается в id
.
Может кто-нибудь объяснить, что что происходит, и как я могу это исправить? Я попытался добавить returning
, используя columns
вместо select
, и, в противном случае, изменить способ создания запроса, но это не помогло, и снова сборка Knex не является проблемой: это результаты .
РЕДАКТИРОВАТЬ: Я повторил тот же точный запрос, используя вместо этого knex.raw(query)
... и получил точно такой же (id
, а не foos_id
) результат. Поэтому проблема определенно не в том, как делается запрос: я каким-то образом что-то делаю, чтобы Knex строил результаты так, чтобы игнорировать полные имена столбцов.