【问题标题】:knexjs innerjoin returning columnsknexjs innerjoin 返回列
【发布时间】:2020-10-14 08:30:59
【问题描述】:

你好,我有一个 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 返回之类的格式吗?

【问题讨论】:

    标签: typescript knex.js


    【解决方案1】:

    我不知道 knexjs 包的具体情况,所以可能有一个捷径,但你总是可以重新格式化结果。

    const {id, department_name, ...employee} = result;
    const fixed = {id, department_name, employee};
    

    这会获取除iddepartment_name 之外的所有属性,并将它们放入employee 属性中。

    【讨论】:

      猜你喜欢
      • 2017-12-19
      • 1970-01-01
      • 2019-01-28
      • 2016-07-18
      • 2021-07-20
      • 2018-03-22
      • 2016-01-08
      • 1970-01-01
      • 2016-12-04
      相关资源
      最近更新 更多