Как функция вставки в строке 12 вызывается без скобок?
Функция insert
здесь не вызывается. Он передается в asyncHandler()
как ссылка на функцию, поэтому ее можно вызвать позже. Это asyncHandler()
, который вызывается немедленно и возвращает новую функцию, которая передается в .post()
в качестве обработчика запроса.
Какова функция asyncHandler (), как будет выглядеть код, если вы решите не использовать его?
Это обертка вокруг insert
, которая ищет отклоненное обещание, возвращенное функцией, и, если найден, автоматически вызывает next(err)
.
Обычно при использовании router.route ('/'). Post есть фигурные скобки, которые следуют. В этом коде я не вижу ничего. Итак, мой вопрос: является ли функция асинхронной вставки частью тела функции router.route ('/'). Post? а если нет, то почему нет фигурных скобок?
Я не уверен, что вы подразумеваете под фигурными скобками. .post()
ожидает, что ему будет передана ссылка на функцию, которая будет вызываться с определенным набором параметров, когда указанный маршрут соответствует входящему запросу. Может использоваться как одно из следующих:
// externally defined request handler function
router.route('/').post(someRequestHandlerFunc);
// inline defined request handler function
router.route('/').post(function(req, res, next) {
// code here for the request handler
});
Что именно экспортируется сюда user.controller.js в строке 14 (это объект, переменная ...)? В чем преимущество экспорта таким образом? Почему бы просто не экспортировать функцию insert ()?
Я предполагаю строку 14, о которой вы спрашиваете: здесь . Это просто экспорт функции insert
в свойство insert
экспорта этих модулей. При экспорте функции вы не используете insert()
. Это вызывает функцию немедленно. Вы просто ссылаетесь на имя функции как insert
, чтобы экспортировать ссылку на функцию, которую можно вызвать позже.
Причиной экспорта является свойство объекта, а не просто экспорт отдельной функции, чтобы сделать модуль расширяемым, чтобы он мог экспортировать другие объекты в виде различных именованных свойств.