@Pavel_Tkachenko
Да, я преступник. Моё преступление — любопытство

Как получить значение параметров через app.use?

Суть такова, приложение при старте записывает, обновляет или удаляет устаревшие маршруты в бд. Информацию, такую как название маршрута, описание и т.п. можно изменить, дабы при переходе по этому маршруту вызвать middleware который подгрузит из бд информацию и выдаст её к примеру в res.locals.title и т.д. С маршрутами без параметров проблем нет, но вот как быть с маршрутами с параметрами к примеру '/:id'

Пример реализации:
app.use(function(req, res, next) {
  // Поиск в бд информацию о маршруте
  Routes.findOne({'path' : req.url}, function(err, rout) {
    /* Пока временное решение поскольку путь генерируемый '/admin/routes/5aeb87729c92911740622fc5',
    в зарегистрированных есть '/admin/routes/:id' */
    if (rout == null) {
        res.locals.title = req.url
    }
   // Иначе отправляем данные из бд
    else {
        res.locals.title = rout.title
    }
    next()
  })
})


Может кто что то подскажет, мб есть другой способ реализации данного функционала?
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Pavel_Tkachenko Автор вопроса
Да, я преступник. Моё преступление — любопытство
Может быть это костыльный-велосипедный способ, но другого пока не придумал, и работает только если параметров не больше 1, ну для начала и то вперед, ещё будет допиваться.

Вот моя реализация:
app.use(function (req, res, next) {
            Routes.findOne({'path' : req.originalUrl}, function(err, pageInfo) {
                if(err) {
                    res.locals.title = 'Ошибка чтения информации о странице из БД';
                    res.locals.description = err;
                    console.log(err); 
                    next();
                }
                if(pageInfo == null) {
                    var search = req.originalUrl.split('/');
                    search.splice(-1,1,':');
                    search = search.join('/');
                    Routes.findOne({'path' : {$regex: search}}, function(err, pageInfo){
                        if(err) {
                            res.locals.title = 'Ошибка чтения информации о странице из БД';
                            res.locals.description = err;
                            console.log(err); 
                            next();
                        }
                        if(pageInfo == null) {
                            res.locals.title = 'Допели скрипт скотина';
                            res.locals.description = err;
                            console.log(err); 
                            next();
                        }
                        else {
                            res.locals.title = pageInfo.title;
                            res.locals.description = pageInfo.description;
                            next()
                        }
                    })
                }
                else {
                    res.locals.title = pageInfo.title;
                    res.locals.description = pageInfo.description;
                    next()
                }
            })
        });


МБ у кого то будут дополнения, буду только рад
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы