TL; DR
Ошибка в том, что вы используете неявные возвраты функций стрелок в вашем серверном коде.
Исправление заключается в добавлении return total;
в первый обработчик .then(...)
.
Детали
Прежде всего, давайте разберемся: я согласен с комментариями о том, что не следует пренебрегать проверками ошибок! (Будь то fetch
или что-нибудь еще.)
В любом случае: Вы используете функции стрелок в ваших .then(...)
обработчиках. Но последнее утверждение в первом - console.log(total)
. Возвращаемое значение этого вызова - undefined
, которое становится неявным возвращаемым значением вашей функции стрелки. Затем обещание передает это значение response
во второй обработчик .then(...)
. (Вы можете проверить это, добавив console.log(response)
во второй обработчик .then(...)
.
Исправление: просто добавьте return total;
в первый обработчик .then(...)
:
const handleNumberOfJobs = (req, res, Register) => {
Register
.find({})
.then(users => {
const total = users.reduce(
(sum, { numberOfJobs }) => sum +
numberOfJobs, 0
);
console.log(total); // <-- returns undefined
return total; // <-- pass on to next promise
})
.then(response => {
// console.log(response); // if you're curious
res.json(response)
})
}
}
Персональная подсказка: вставьте код в код для облегчения обслуживания.