json - 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
. 实现这一目标的方法是什么?
解决方案
SQL 响应本质上是平面表,因此除了 knex 之外,您还需要一个外部库,它可以将平面信息重建为嵌套对象。
大多数 ORM 库都知道如何做到这一点。例如,构建在 knex 之上的 objection.js 用于获取.eager()
嵌套关系。使用 objection.js ORM,查询看起来像这样Project.query().where('id', 1).eager('employees')
推荐阅读
- javascript - 向名称添加序号后缀以使记录唯一
- rust - 编写一个包含字符串并且可以在常量中使用的 Rust 结构类型
- sass - 无法将 sass 变量分配给 css 变量
- awk - 我如何用 awk 过滤掉某些文本但也打印文本?
- angular - 如何将动态生成的表单组添加到Angular中动态生成的表行?
- javascript - 在 HEX 颜色格式中使用 #
- javascript - 是否可以在引导程序 4 中显示下一个和上一个滑块图像,而不是下一个和上一个箭头?
- java - RestTemplate GET 调用给出 422
- python - 将相同的字符放在字符串中的两个不同位置
- reactjs - React map() - 未捕获的类型错误:无法读取未定义的属性“类别”