如何 return 仅使用计数?

How to return only number using count?

我正在使用 knex,我只想 return 数字而不是 RowDataPacket,这是我的代码:

let totalUsers = await ctx.db('user')
    .join('group', 'user.id', 'group.user_id')
    .where('user.first_name', 'like', '%' + firstName + '%')
    .count()
    .first();

console.log(totalUsers);

本质上是这个 returns:

RowDataPacket { 'count(*)': 1 }

我只想得到1,我该怎么做?

我很确定您可以使用它来获取计数值:

let count = totalUsers["count(*)"];

我还认为不同 DBRMS 的驱动程序会 return 计数变量的不同名称。例如,对于 SQL 服务器,当我尝试时,计数字段没有正确的名称,只有 ''。所以为了让它在所有 SQL 方言中工作,我会在 SQL 查询中给计数一个别名,像这样:

.count('* AS c')

然后您可以像这样访问它:

let count = totalUsers["c"];