вернуть данные из функции соединения nodejs mysql - PullRequest
0 голосов
/ 03 мая 2018

Я делаю это:

    var mysql = require('mysql');
    var config = require('./../Config.js');

    var connection = mysql.createConnection({
        host: config.databaseConnection.host ,
        user: config.databaseConnection.user,
        password: config.databaseConnection.password,
        database: config.databaseConnection.database
    });

    var executeQuery = function (querystring) {



connection.connect(function (err) {

    if (err) throw err;
    console.log("connected to database successfully");
    connection.query(querystring,function(err,rows){
    if(err) throw err;
    console.log(rows);
    });

});

    }


    module.exports = connection;

Я хочу, чтобы данные в "строках" были возвращены моей функцией executeQuery. Я много искал по обратным вызовам, но не мог понять, как все работает. Пожалуйста, помогите мне с этим.

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете передать функцию обратного вызова функции executeQuery. Что-то вроде ниже

var executeQuery = function (querystring, myCallbackFunction) {
  connection.connect(function (err) {
    if (err) throw err;
    console.log("connected to database successfully");
    connection.query(querystring, function (err, rows) {
      if (err) throw err;
      console.log(rows);
      myCallbackFunction(rows);
    });
  });
}

const myCallbackFunction = function(rows) {
  // do stuff here with rows
}

executeQuery(querystring, myCallbackFunction)

Вы также можете принять подход, основанный на обещаниях

var executeQuery = function (querystring) {
  return new Promise((resolve, reject) => {
    connection.connect(function (err) {
      if (err) throw err;
      console.log("connected to database successfully");
      connection.query(querystring, function (err, rows) {
        if (err) throw err;
        console.log(rows);
        resolve(rown);
      });
    });
  });
}

executeQuery(querystring).then((rown) => {
// do stuff here with rows
});

если вам нужно это в цикле, вы можете сделать

const allPromises= [];
for (let i = 0; i < loopLength; i+=1) {
  allPromises.push(executeQuery(querystring));
}
Promise.all(allPromises).then((result) => {
  // code here
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...