#typescript #knexjs
#typescript #knex.js
Вопрос:
Здравствуйте, у меня есть отношения 1: n, и при поиске отношений я хочу использовать эти отношения:
вот так:
{
id: '7e413f8d-2a07-4f2e-bbc9-eb8892948a03',
departament_name: 'test',
employee: {
employee_id: 'a9c678bb-c274-4908-add0-34a856d2458e',
matricula: '123',
departament_id: '7e413f8d-2a07-4f2e-bbc9-eb8892948a03',
first_name: 'test',
last_name: 'test2'
}
}
но я получил это:
{
id: '7e413f8d-2a07-4f2e-bbc9-eb8892948a03',
departament_name: 'test',
manager_id: 'a9c678bb-c274-4908-add0-34a856d2458e',
employee_id: 'a9c678bb-c274-4908-add0-34a856d2458e',
matricula: '123',
departament_id: '7e413f8d-2a07-4f2e-bbc9-eb8892948a03',
first_name: 'test',
last_name: 'test2'
}
запрос:
const rawDepartament = await this.db
.select([
`${this.tableName}.id`,
`${this.tableName}.departament_name`,
`${this.tableName}.manager_id`,
`employees.id as employee_id`,
`employees.matricula`,
`employees.departament_id`,
`employees.first_name`,
`employees.last_name`,
])
.from<Departament>(this.tableName)
.where({ departament_name })
.innerJoin<Employee>(
'employees',
`${this.tableName}.manager_id`,
'employees.id',
)
.first();
console.log(rawDepartament);
отношения:
Может кто-нибудь помочь мне, как я мог бы отформатировать результат моего запроса на что-то вроде typeorm returns?
Ответ №1:
Я не знаю конкретно о пакете knexjs, поэтому может быть ярлык, но вы всегда можете просто переформатировать результаты.
const {id, department_name, ...employee} = resu<
const fixed = {id, department_name, employee};
Это принимает все свойства, отличные от id
и department_name
, и помещает их в employee
свойство.