* Dynami c маршрутизатор в express - PullRequest
0 голосов
/ 05 марта 2020

У меня есть несколько типов проектов, каждый проект обрабатывает свой код. Я хочу сделать обработчик маршрута для каждого проекта.

Например,

  • router.use('/projects/dog_name', dog)
  • router.use('/projects/cat_name', cat)

Имя проекта - Dynami c, полученное при получении данные из базы данных и время от времени обновляются.

Что я могу сделать?

1 Ответ

0 голосов
/ 06 марта 2020

Если это будет код, который решает, как обрабатывать маршрутизатор, то вам, вероятно, нужен один общий c маршрут, который затем может использовать код logi c для динамического распределения обработки маршрута на основе некоторого рода динамических параметров. c lookup:

  let dynamicRoutes = new Map([["golden", dog], ["persian", cat]]);

  router.use("/projects/:name", (req, res, next) => {
      let target = dynamicRoutes.get(req.params.name);
      if (target) {
           target(req, res, next);
      } else {
           next();
      }
  });

Затем вы можете добавлять / удалять элементы из структуры данных dynamicRoutes для добавления / удаления новых динамических c маршрутов в любое время. Если у вас есть logi c, включающий поиск в базе данных, вы можете использовать его вместо map.get(). Или, возможно, по соображениям производительности, вы не запрашиваете базу данных при каждом попадании маршрута, а скорее запрашиваете базу данных, когда что-то меняется, и обновляете структуру данных dynamicRoutes (например, кэш), когда вы знаете, что что-то изменилось в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...