возвращает несколько строк из node.js

#mysql #node.js #stored-procedures

#mysql #node.js #хранимые процедуры

Вопрос:

Сохраненный процесс в MySQL

 DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_users`(IN `IN_Token` VARCHAR(50))
    NO SQL
BEGIN
    Select user_id, name, email 
    FROM tbluser 
    where is_active = 1 and api_token != IN_Token;
END$$
DELIMITER ;
  

Код для отправки запроса в сохраненный Процесс

 let sql = "SET @IN_Token='"   data.token   "';";
sql  = "CALL sp_user_chat_users(@IN_Token);";

this.connection.query(sql, function (error, results, fields) {
    console.log(results);
});
  

Ниже приведен результат в консоли?

введите описание изображения здесь

Вопрос

Поскольку в результате получается 3 объекта. Является ли хорошей практикой писать жесткий код, подобный приведенному ниже, для возврата массива RowDataResult?

 results[1];
  
  1. Есть 2 пакета Ok
  2. Есть один RowDataPacket

Ответ №1:

В моем случае я собираюсь использовать Array, например

в mysql,

 test = function(callback) {
#connecting db;
var sql = ~~~;
this.connection.query(sql, function (error, results, fields) {
    if(error) {
       throws err;
    }
     result(null, results);
});
}
  

затем в коде js

 app.get('something', function(req, res) {
    test( function(err, data) {
        console.log(data[0].fieldCount);
        console.log(data[1].fieldCount);
    });
});
  

вот так.