2016-03-17 2 views
0

Я использую пакет NPM mysql в течение многих месяцев и не сталкивался с какими-либо проблемами. Но этот код действует странно.NodeJS + mysql: выбор запроса, возвращающего отдельные объекты

using(connectionPool.getSqlConnection(), function(connection) { 
     return connection.queryAsync('SELECT * from table_name'); 
    }).spread(function(rows, fields) { 
     console.log('Rows: %j', rows); 
     console.log('Fields: %j', fields); 
     res.json(rows); 
    }).error(function(err) { 
     console.log(err); 
    }); 

Я знаю, что в таблице 50 строк. Но я получаю только 1 в rows. Кроме того, странно fields имеет 2-й ряд. Любая идея, почему это происходит? Я использовал тот же запрос в другом месте без проблем.

РЕДАКТИРОВАТЬ

Я вертел вокруг немного и обнаружили, что каждая строка подходит как отдельный объект. Так что, если изменить код на следующее:

using(connectionPool.getSqlConnection(), function(connection) { 
     return connection.queryAsync('SELECT * from table_name'); 
    }).spread(function(r1, r2, r3, r4) { 
     console.log('Rows: %j', r1); 
     console.log('Rows: %j', r2); 
     console.log('Rows: %j', r3); 
     console.log('Rows: %j', r4); 
     res.json(rows); 
    }).error(function(err) { 
     console.log(err); 
    }); 

каждый из R1, R2, R3, R4, ... есть один объект строки.

+0

Я считаю, что это поведение функции 'spread'. Как насчет простого использования '.query'? См. [Документация] (https://github.com/felixge/node-mysql#introduction) –

+0

Да, это сработало. Благодаря! – Rahul

ответ

0

Ответ на себя, чтобы он помог кому-то другому.

using(connectionPool.getSqlConnection(), function(connection) { 
     return connection.queryAsync('SELECT * from table_name'); 
    }).then(function(rows) { 
     console.log('Rows: %j', rows); 
     res.json(rows); 
    }).error(function(err) { 
     console.log(err); 
    }); 

Это работает.

Смежные вопросы