Могу ли я в Nuxt universal mode (не spa) запускать свои middleware и делать запросы к MYSQL? Как именно?

Конечно, вы можете использовать свои middleware и делать запросы к MySQL в Nuxt.js в режиме Universal (не SPA), и в этом ответе я расскажу вам, как это сделать.

Во-первых, давайте разберемся с middleware. Middleware в Nuxt.js является функцией, которая выполняется перед рендерингом страницы. Это позволяет вам внести изменения в запрос или ответ сервера перед тем, как он будет отправлен клиенту. Чтобы создать свой собственный middleware в Nuxt.js, вам нужно создать файл с расширением .js в папке middleware в корневом каталоге проекта. В этом файле вы можете определить свою функцию middleware и выполнить в ней нужные вам действия. Например, если вы хотите сделать запрос к базе данных MySQL, вы можете использовать библиотеку для работы с MySQL, такую как mysql2. В качестве примера, давайте создадим middleware, который делает запрос к базе данных MySQL:

// middleware/fetchData.js

const mysql = require('mysql2');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'youruser',
  password: 'yourpassword',
  database: 'yourdatabase',
});

module.exports = function (req, res, next) {
  // Делаем запрос к базе данных
  connection.query('SELECT * FROM yourtable', (error, results, fields) => {
    if (error) {
      throw error;
    }

    // Обработаем результат и передадим его в шаблон
    req.data = results;
    next();
  });
};

В этом примере мы создали подключение к базе данных MySQL и выполнили запрос 'SELECT * FROM yourtable'. Затем мы обработали результаты и передали их в объект req, чтобы их можно было использовать в шаблоне.

Теперь, когда у вас есть middleware для запроса к базе данных, вам нужно его подключить к Nuxt.js. Для этого вам нужно добавить этот middleware в свойство serverMiddleware файла nuxt.config.js:

// nuxt.config.js

module.exports = {
  // ...
  serverMiddleware: [
    '~/middleware/fetchData',
  ],
  // ...
};

Теперь при каждом запросе сервер будет вызывать ваш middleware fetchData, и результаты запроса к базе данных будут доступны в шаблоне через объект req.data.

Это только пример использования middleware для обращения к базе данных MySQL в Nuxt.js. Вы можете адаптировать его под свои нужды, добавлять дополнительные обработчики ошибок или логику. Кроме того, обратите внимание, что это только один из способов работы с базой данных MySQL в Nuxt.js. В зависимости от ваших требований, вы можете использовать другие библиотеки, такие как sequelize или knex, или использовать ORM для более удобного взаимодействия с базой данных.

Надеюсь, что эта информация поможет вам разобраться в использовании middleware и запросах к базе данных MySQL в Nuxt.js в режиме Universal. Удачи в разработке!