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

Как отрендерить больше одной группы (таблицы) пользователей на одной странице при использовании node.js и базы данных?
Изображение к вопросу
  • 5 ноября 2023 г. 16:00
Ответы на вопрос 2
Для отправки и обработки нескольких запросов к базе данных MySQL на Node.js с использованием Express, вы можете использовать модуль mysql2.

Вот пример кода, демонстрирующий, как отправить два запроса SELECT к базе данных:

```javascript
const express = require('express');
const mysql = require('mysql2');

const app = express();

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

app.get('/users', (req, res) => {
  // Отправка первого запроса SELECT
  connection.query('SELECT * FROM users', (error, results) => {
    if (error) throw error;

    // Обработка результатов первого запроса

    // Отправка второго запроса SELECT
    connection.query('SELECT * FROM categories', (error, results) => {
      if (error) throw error;

      // Обработка результатов второго запроса

      // Отправка ответа клиенту
      res.send('Запросы обработаны успешно');
    });
  });
});

app.listen(3000, () => {
  console.log('Сервер запущен на порту 3000');
});
```

Чтобы отрендерить больше одной группы (таблицы) пользователей на одной странице при использовании Node.js и базы данных, вы можете использовать шаблонизатор для Node.js, такой как EJS (Embedded JavaScript).

Вот пример, как использовать EJS для отрисовки двух таблиц пользователей на одной странице:

1. Установите EJS, выполнив команду npm install ejs.
2. Создайте папку views и в ней создайте файл index.ejs с содержимым:

```html
<!DOCTYPE html>
<html>
<head>
  <title>Страница пользователей</title>
</head>
<body>
  <h1>Группа 1</h1>
  <table>
    <thead>
      <tr>
        <th>ID</th>
        <th>Имя</th>
      </tr>
    </thead>
    <tbody>
      <% users1.forEach(function(user) { %>
        <tr>
          <td><%= user.id %></td>
          <td><%= user.name %></td>
        </tr>
      <% }); %>
    </tbody>
  </table>

  <h1>Группа 2</h1>
  <table>
    <thead>
      <tr>
        <th>ID</th>
        <th>Имя</th>
      </tr>
    </thead>
    <tbody>
      <% users2.forEach(function(user) { %>
        <tr>
          <td><%= user.id %></td>
          <td><%= user.name %></td>
        </tr>
      <% }); %>
    </tbody>
  </table>
</body>
</html>
```

3. В вашем файле сервера добавьте код для рендеринга страницы index.ejs и передачи данных из базы данных:

```javascript
const express = require('express');
const mysql = require('mysql2');
const ejs = require('ejs');

const app = express();

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

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.get('/users', (req, res) => {
  // Отправка запроса SELECT для первой группы пользователей
  connection.query('SELECT * FROM users1', (error, results1) => {
    if (error) throw error;

    // Отправка запроса SELECT для второй группы пользователей
    connection.query('SELECT * FROM users2', (error, results2) => {
      if (error) throw error;

      // Рендеринг страницы index.ejs и передача данных в шаблон
      res.render('index', { users1: results1, users2: results2 });
    });
  });
});

app.listen(3000, () => {
  console.log('Сервер запущен на порту 3000');
});
```

После запуска сервера на
1. Найдено простое решение для задачи, которое может быть полезно кому-то:// Все группы
exports.gr = (req, res) => {

  pool.getConnection((err, connection) => {
    //коннект к бд

    if (err) throw err; // не удалось подключиться
    console.log("Connected as ID " + connection.threadId);

    // коннект к таблице sql
    // connection.query(
    //   'SELECT * FROM users WHERE gr = "one"',
    //   (err, rows) => {
    //     if (!err) {
    //       let filterOne = req.query.one;
    //       res.render('gr', { rows, filterOne});
          
    //     } else {
    //       console.log(err);
    //     }
    //     console.log("The data from user table: \n", rows);

    //   }
    // );
    connection.query('SELECT * FROM users WHERE gr = "one"', function(err, rows) {
      connection.query( 'SELECT * FROM users WHERE gr = "two"', function(err, rows2) {
        res.render('gr', { rows : rows, rows2: rows2 });
      });
    });
  }); 
 
};
Похожие вопросы