Как сформировать json из двух запросов SQL?

Для формирования JSON из двух запросов SQL в Node.js, вы можете использовать функцию Promise.all, чтобы сделать оба запроса параллельно, а затем объединить результаты в JSON-объект.

Вот пример кода, который иллюстрирует этот подход:

const mysql = require('mysql');

// Конфигурация подключения к базе данных
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'username',
  password: 'password',
  database: 'database_name',
});

// Функция для выполнения SQL-запроса
function executeQuery(query) {
  return new Promise((resolve, reject) => {
    connection.query(query, (error, results) => {
      if (error) {
        reject(error);
      } else {
        resolve(results);
      }
    });
  });
}

// Функция для формирования JSON из двух запросов
async function generateJsonFromQueries() {
  try {
    // Выполняем оба запроса параллельно
    const results = await Promise.all([
      executeQuery('SELECT * FROM table1'),
      executeQuery('SELECT * FROM table2'),
    ]);

    // Создаем JSON-объект
    const json = {
      table1: results[0],
      table2: results[1],
    };

    return JSON.stringify(json);
  } catch (error) {
    throw new Error('Ошибка при генерации JSON: ' + error.message);
  }
}

// Вызываем функцию генерации JSON и обрабатываем результат
generateJsonFromQueries()
  .then((json) => {
    console.log(json);
  })
  .catch((error) => {
    console.error(error);
  });

В этом коде мы создаем подключение к базе данных и определяем функцию executeQuery, которая выполняет SQL-запрос и возвращает результат в виде промиса. Затем мы определяем функцию generateJsonFromQueries, которая использует Promise.all, чтобы выполнить два запроса параллельно и объединить результаты в JSON-объект. Наконец, мы вызываем функцию generateJsonFromQueries, обрабатываем результат и выводим его в консоль.

Убедитесь, что вы правильно настроили подключение к базе данных и заменили 'username', 'password' и 'database_name' значениями соответствующими вашей базе данных.

Надеюсь, это помогло! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.