knexjs innerjoin возвращает столбцы

#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 свойство.