Я пытаюсь получить доступ к своему промежуточному программному обеспечению уровня приложения из маршрутизатора в проекте, созданном с помощью генератора экспресс-приложений.
Промежуточное программное обеспечение используется для запроса базы данных с помощью идентификатора пользователя, полученного от маршрутизатора.
Iчувствую, что я упускаю что-то очень простое (или фундаментальное), но не могу обойти проблему (это мой первый проект Node.js). Поэтому больше, чем лучшая практика, я ищу простое решение
Я пытался использовать различные методы приложения, включая post.
/ app.js
var MyAppMidW = function (req, res, next) {
res.send(queryDB(req));
next()
}
app.use(MyAppMidW);
/маршруты / index.js
router.get("/dbquery", (req, res) => {
if (req.header('auth-header')) {
res.send(req.app.get.MyAppMidW(req.header('auth-header'))); //The problem
}
else {
res.send(req.app.get('defaultData')); //This works
}
});
Сообщения об ошибках включают «$ middleware не является функцией» и «$ middleware не определено».
Решение
/ app. js
app.MyAppMidW = function (req) {
queryDB(req);
}
/ route / index.js
router.get("/dbquery", (req, res) => {
if (req.header('auth-header')) {
req.app.MyAppMidW(req.header('auth-header'))); //Makes a database query
res.send(req.app.get('defaultData')); //Fetches database query result
}
else {
res.send(req.app.get('defaultData'));
}
});