Тип данных результата запроса Nodejs node-mysql

Мне трудно понять, как получить данные из запросов mysql в функции обратного вызова. Например, у меня есть запрос следующим образом:

mysqlConnection.query('SELECT COUNT(*) from card AS count', function (err, result) {
    if (err) {
        throw err;
    } 
    else {
        console.log(Type.of(result));
        console.log("card count is as: " + result.count);
        console.log("Card count is: " + result["COUNT(*)"]);
        console.log(result);
    }
});

Это распечатывает:

[Function: Array]
card count is as: undefined
Card count is: undefined
[ { 'COUNT(*)': 3 } ]

Что такое тип данных «[Function: Array]» и как вы выбираете из него переменные? Массив функций? Почему «result.count» не определен, хотя я в запросе использую AS.

Кроме того, чем следующий запрос отличается от того, что находится под ним?

mysqlConnection.query('SELECT COUNT(*) from card AS count', function (err, rows, fields) {
});

mysqlConnection.query('SELECT COUNT(*) from card AS count', function (err, result) {
});

Когда я использую другой и когда другой?


person Waltari    schedule 01.08.2015    source источник


Ответы (2)


Обратный вызов с function (err, rows, fields) гораздо больше подходит для выбора данных, с которыми вы работаете, и тогда строки будут заполнены массивом массивов. Итак, в вашем случае rows[0]['COUNT(*)'] будет вашим счетом.

Для выборки с несколькими строками вы можете просмотреть результаты в цикле.

В качестве примечания, я думаю, вы имели в виду SELECT COUNT(*) AS count from card, который тогда был бы доступен гораздо проще, чем rows[0].count

person trex005    schedule 01.08.2015

Измените свой запрос на

SELECT COUNT(*) AS count from card 

Псевдоним столбца должен быть определен после выбора столбца, а не после from.

person Vamsi Prabhala    schedule 01.08.2015