在 select knex js 内计数

Counting inside select knex js

我有两套table,如下所示

用户table

|  id| name |
|----|------|
|  1 |  x   |
|  2 |  y   |
|  3 |  z   |

访问量table

| event_id | user_id |
|----------|---------|
|     1    |  1      |
|     2    |  2      |
|     3    |  3      |
|     4    |  1      |
|     5    |  1      |
|     1    |  2      |

如何获取每个用户的访问次数以及用户名。 我知道原始 SQL 可以与 knex 一起使用,我可以使用 SQL 查询轻松地做到这一点。我很想知道仅使用 knex js 是否可行。

await knex('visits').count().groupBy('user_id');

上面的查询会给我每个用户的访问次数。我如何在同一查询中获取用户的名称。

我正在寻找如下所示的输出

| user_id  | name | count |
|----------|------|-------|
|     1    |  x   |   3   |
|     2    |  y   |   2   |
|     3    |  z   |   1   |

尝试:

knex('visits')
  .select(['visits.user_id AS user_id', 'user.name'])
  .count('visits.user_id AS count')
  .leftJoin('user', 'user.id', 'visits.user_id')
  .groupBy(['visits.user_id', 'user.name']);