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