NodeJS / Knex创建Json响应

时间:2018-07-27 11:52:44

标签: json node.js postgresql express knex.js

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

问题:

想象一下数据库中的以下两个表:

表1


PROJECT
id (pk)
name

表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()不会返回employees的数组。实现该目标的方法是什么?

1 个答案:

答案 0 :(得分:2)

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

大多数ORM库都知道该怎么做。例如,构建在knex之上的 objection.js 使用.eager()来获取嵌套关系。使用objection.js ORM,查询看起来像这样Project.query().where('id', 1).eager('employees')