Я использую Express.js в своем коде с Node.js v7.3. В этом я создал User Router
, который перенаправляет запросы на мой User Controller
.
Я использую async/await внутри User Controller
для выполнения асинхронных вызовов. Проблема в том, что IntelliJ дает мне предупреждение, говорящее, что
Обещание, возвращенное из login(), игнорируется.
Дело в том, что я даже ничего не возвращаю из метода login()
.
Здесь код -
UserRouter.js
router.post('/login', function (req, res, next) {
userController.login(req, res); // I get the warning here
});
UserController.js
exports.login = async function (req, res) {
try {
const verifiedUser = await someFunction(req.body.access_code);
let user = await User.findOrCreateUser(verifiedUser);
res.status(200).send(user);
}
catch (err) {
res.status(400).send({success: false, error: err});
}
};
Если я напишу один и тот же метод входа, используя собственный promises, то я не получу это предупреждение. Я понимаю что-то неправильно здесь или IntelliJ по вине?
EDIT -
Благодаря @Stephen я понимаю, что функция async возвращает обещание, но не лучше ли Intellij идентифицировать, что ничего не возвращается из асинхронной функции и не отображает это предупреждение, потому что когда я цепляю .then()
после функции login()
, он предоставляет объект undefined
в результат then. Это означает, что если мы не возвращаем что-то из асинхронной функции явно, возвращается undefined?