Как вернуть результат из функции connection.query?

В модуле Node.js есть несколько способов получить результат выполнения запроса к базе данных MySQL с использованием функции connection.query(). В этом ответе я рассмотрю два наиболее распространенных способа.

Первый способ - использование колбэка. Функция connection.query() принимает колбэк в качестве последнего аргумента. Колбэк вызывается при успешном выполнении запроса и принимает два аргумента - ошибку (если она возникла) и результат запроса. Вы можете проверить ошибку и обработать результат внутри колбэка. Вот пример:

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'mydatabase'
});

connection.connect((error) => {
  if (error) throw error;
  
  connection.query('SELECT * FROM mytable', (error, result) => {
    if (error) throw error;
    
    // Обработка результата
    console.log(result);
  });
});

В этом примере мы устанавливаем соединение с базой данных, а затем выполняем запрос SELECT. Если запрос выполнен успешно, результат будет доступен в параметре 'result' колбэка.

Второй способ - использование промисов. Если вы не хотите использовать колбэки, вы можете обернуть вызов connection.query() в промис, используя обещания (Promises) или асинхронные/ожидаемые функции (Async/await). Вот пример:

const mysql = require('mysql2/promise');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'mydatabase'
});

(async () => {
  try {
    const result = await connection.query('SELECT * FROM mytable');
    
    // Обработка результата
    console.log(result);
  } catch (error) {
    throw error;
  } finally {
    await connection.end();
  }
})();

В этом примере мы создаем асинхронную самовызывающуюся функцию, которая подключается к базе данных и выполняет запрос SELECT. Результат запроса будет доступен в переменной 'result'. Мы также используем блок 'try/catch/finally' для обработки ошибок и корректного завершения соединения с базой данных.

Оба этих способа позволяют получить результат выполнения запроса функции connection.query() и обработать его внутри кода Node.js. Вы можете выбрать тот, который больше всего соответствует вашим потребностям и стилю программирования.