【发布时间】:2020-09-17 09:07:24
【问题描述】:
我的场景 id 是一个连接到 mysql 数据库的 nodejs + express 应用程序。
有一些上下文配置,对所有网站和所有用户都有效,我需要在每个页面请求时从数据库加载(不是在应用程序初始化时,因为我不想在配置更改时重新加载整个服务器)。
我的想法是使用一个简单的中间件将上下文注入到请求中,如下所示:
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()); 之后使用中间件,否则即使是静态文件请求(图像、css、js...)也会调用我的中间件。
这种方法正确吗?
谢谢
【问题讨论】:
标签: javascript mysql node.js express configuration