мой идентификатор сценария nodejs + express приложение, подключенное к базе данных mysql.
Есть некоторые конфигурации контекста, действительные для всех веб-сайтов и всех пользователей, которые мне нужно загрузить с база данных при каждом запросе страницы (не при инициализации приложения, потому что я не хочу перезагружать весь сервер при изменении конфигурации).
Моя идея состояла в том, чтобы использовать простое промежуточное ПО для вставки контекста в запрос, вот так:
const express = require('express');
const contextSetup = require('./contextSetup');
const app = express();
...
app.use(contextSetup.middleWare);
...
и в contextSetup.js
:
const DB = require('./DB');
module.exports.middleWare = (req, res, next) => {
DB.query('select `code`, `data` from `setting` order by `sort`')
.then((rows) => {
const keyVals = {};
rows.forEach((row) => {
keyVals[row.code] = row.data;
});
req.appContext = keyVals;
next();
})
.catch((err) => next(err));
};
Единственное предупреждение - использовать промежуточное ПО после app.use(express.static());
, иначе мое промежуточное ПО будет вызываться даже для stati c запрос файлов (изображения, css, js, ...).
Правильный ли этот подход?
Спасибо