Knex加入以从第三张表中获取数据
我正在为数据库使用knex。我需要使用INNER或LEFT JOIN(如果我理解正确)来获取数据,以所需的格式获取数据。
我的表格结构:
我需要从组织以及与组织相关的所有用户中获取所有字段,格式如下:
[
{
id: 1,
name: 'some organization',
users: [
{ id: 1, first_name: 'some-name',...} ,
...
]
},
...
]
我了解,如果我想从某个组织中检索用户ID,我必须这样做:
knex('organizations')
.join('organization_users', 'organizations.id', '=', 'organization_usersanization_id')
.select('organizations.id', 'organizations.name', 'organization_users.user_id')
但是如何从users
表中获取确切的用户?寻求建议和帮助。
Knex不会像这样返回嵌套结构:
I need to get all fields from organizations and also all users related to organization in format like:
[
{
id: 1,
name: 'some organization',
users: [
{ id: 1, first_name: 'some-name',...} ,
...
]
},
...
]
您需要适当地加入很多东西和别名列名,然后将结果分组以纠正对象并在javascript端构建嵌套表示。
或者,不加入数据,您可以执行一些特定于数据库的子查询+ json转换+聚合,以便所有用户在组织表结果中显示为json数组列。
或者,您首先要查询组织,然后再查询那些组织的所有用户,然后将这些用户分组并为正确的用户组分配正确的组织(如果您不使用任何ORM,这是一种方法。)>
或者您可以使用Objection.js或其他一些ORM来自动为您执行此操作。 Knex对于应用程序开发来说是一个太低级的工具。
很抱歉没有为您编写代码,也许其他人会为您提供:)