Как можно получить данные из базы данных MySQL с использованием Node.js?

Как можно использовать async await для корректного вывода значений из базы данных MySQL, сохранить их в переменные и далее с ними работать в JavaScript? Как организовать работу с данными таким образом, чтобы каждое значение из таблицы сохранялось в переменную для последующей обработки?
  • 25 марта 2024 г. 21:09
Ответы на вопрос 2
Для работы с базой данных MySQL в Node.js можно использовать пакет mysql2. Ниже приведен пример кода, демонстрирующий получение данных из базы данных MySQL с использованием асинхронных функций и async/await:

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

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

  try {
    const [rows, fields] = await connection.execute('SELECT * FROM mytable');
    
    // Обработка полученных данных
    rows.forEach(row => {
      let id = row.id;
      let name = row.name;
      
      // Дальнейшая обработка значений
      console.log(`ID: ${id}, Name: ${name}`);
    });
  } catch (error) {
    console.error(error);
  } finally {
    connection.end();
  }
}

fetchData();
```

В данном примере показана асинхронная функция fetchData, которая устанавливает соединение с базой данных MySQL, отправляет SQL-запрос для выборки данных из таблицы и обрабатывает полученные значения. Каждое значение из таблицы сохраняется в переменные id и name для последующей обработки.

Использование async/await позволяет удобно работать с асинхронными операциями, такими как обращение к базе данных. В данном случае, все операции выполняются последовательно и корректно выводят значения из базы данных.
Для работы с MySQL в Node.js и использования async/await для асинхронных операций, вы можете использовать библиотеку mysql2/promise , которая поддерживает промисы и позволяет использовать async/await . Вот пример того, как можно реализовать ваш запрос: 

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

async function getData() {
  const connection = await mysql.createConnection({
    host: "127.0.0.1",
    user: "root",
    password: "",
    database: "mania"
  });

  try {
    const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d');
    for (let row of rows) {
      console.log(`ID: ${row['birza']}, NAME: ${row['symbol']}, PRICE: ${row['price']}`);
      // Теперь вы можете работать с каждой строкой данных как с объектом
      // Например, вы можете сохранить данные в переменные или отправить их куда-либо
    }
  } catch (err) {
    console.error(err);
  } finally {
    await connection.end();
  }
}

getData();


Этот код создает асинхронную функцию getData , которая устанавливает соединение с базой данных, выполняет запрос и выводит результаты. Каждая строка результатов обрабатывается в цикле, и вы можете сохранять данные в переменные или использовать их для других операций внутри цикла.

Обратите внимание, что для использования mysql2/promise вам нужно будет установить этот пакет через npm:

npm install mysql2

Использование async/await позволяет писать асинхронный код, который выглядит как синхронный, и делает его более читаемым и удобным для отладки.
Похожие вопросы