Express маршрут с несколькими промежуточными программами и разделенными уровнями - PullRequest
0 голосов
/ 18 июня 2020

Я читаю GitHub https://github.com/goldbergyoni/nodebestpractices и пытаюсь применить советы к своему проекту. В настоящее время я работаю над советом « 1.2 Layer your components, keep Express в пределах его границ », но у меня есть вопрос.

Я использую маршруты / контроллеры, и используя этот совет ( 1.2 ), маршрут с несколькими промежуточными программами будет выглядеть следующим образом:

router.post("/do-multiple-stuff", 
       (req, res, next) => {
           stuffController.getStuffDone(req.body.stuff);
           next();
       },
       (req, res, next) => {
           stuffController.getOtherStuffDone(req.body.otherStuff);
           return res.send("stuff done");
        });

Это правильно? Или есть способ лучше?

Спасибо! <3 </p>

1 Ответ

0 голосов
/ 19 июня 2020

Смысл этого раздела 1.2 состоит в том, чтобы создать вашу бизнес-логи c как отдельный тестируемый компонент, который передает только данные, а не req и res. Это позволяет проводить его независимое и раздельное тестирование без окружающей среды Express.

Ваши вызовы:

stuffController.getStuffDone(req.body.stuff);

и

stuffController.getOtherStuffDone(req.body.otherStuff);

Действительно делают это правильное разделение между сетью и бизнес-логами c, потому что вы не передаете req или res своему контроллеру. Похоже, это соответствует пункту шага обучения 1.2.

Единственное, чего я здесь не вижу, - это то, что ни один из этих вызовов функций не выводит никаких результатов. Они ничего не возвращают, и, поскольку вы не передаете им req или res, они не могут изменять объект req (как это делают некоторые промежуточные программы) и не могут отправлять ответ или ошибку. сами. Таким образом, похоже, что им нужен механизм для обратной передачи некоторого типа результата, либо прямое возвращаемое значение (если функции синхронны), либо возврат обещания (если функции асинхронные). Тогда вызывающий код может получить свой результат и что-то с ним сделать.

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