NodeJS/Knex 创建 Json 响应

NodeJS/Knex Creating Json Response

我目前正在将 NodeJS 与 knex (Postgresql) 一起用于数据库。

问题:

假设数据库中有以下两个表:

Table 1


PROJECT
id (pk)
name

Table 2


EMPLOYEE
id (pk)
name
project_id (fk)

我想为用户创建一个 json- 响应,如下所示:

{
  projects: [
    {
      id: 1,
      name: 'emxample 1',
      employees: [
       {
         id: 1,
         name: 'example 1'
       },
       {
         id: 2,
         name: 'example 2'
       }
      ]
    }
  ] 
}

等等。

进行如下查询:

let query = knex('project').select('project.*', 'employee.*').join('employee', 'employee.project_id', '=', 'project.id');

query.then((projects) => { res.json(projects); }); 

并且使用 res.json() 不会 return employees 的数组。实现这一目标的方法是什么?

SQL 响应本质上是平面表,因此除了 knex 之外,您还需要一个外部库,它可以将平面信息重建为嵌套对象。

大多数 ORM 库都知道如何做。例如,构建在 knex 之上的 objection.js 使用 .eager() 来获取嵌套关系。使用 objection.js ORM,查询将如下所示 Project.query().where('id', 1).eager('employees')