首页 > 解决方案 > NodeJS/Knex 创建 Json 响应

问题描述

我目前正在使用带有 knex (Postgresql) 的 NodeJS 来处理数据库。

问题:

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

表格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); }); 

并且 usingres.json()不会返回employees. 实现这一目标的方法是什么?

标签: jsonnode.jspostgresqlexpressknex.js

解决方案


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

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


推荐阅读