Как вернуть только номер используя count? - PullRequest
0 голосов
/ 19 апреля 2020

Я использую knex, и я хотел бы вернуть только число вместо 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);

по сути это возвращает:

RowDataPacket {'count (*)': 1}

Я хотел бы получить только 1, как я могу это сделать?

1 Ответ

1 голос
/ 20 апреля 2020

Я почти уверен, что вы можете использовать это для получения значения счетчика:

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

Я также думаю, что драйверы для разных СУБД будут возвращать разные имена для переменных счетчика. Например, для SQL Server поле подсчета не имело правильного имени, когда я пытался, просто ''. Поэтому, чтобы он работал на всех диалектах SQL, я бы дал подсчету псевдоним в запросе SQL, например:

.count('* AS c')

Затем вы можете получить к нему следующий доступ:

let count = totalUsers["c"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...