У меня есть приложение Koa 2, и запись в /signup обрабатывается этой функцией:
import User from 'models/user';
export const signup = async (ctx, next) => {
const { email, password } = ctx.request.body;
try {
const existingUser = await User.findOne({ email });
if (existingUser) {
ctx.body = { error: 'Email is in use' };
return next();
}
const user = new User({
email,
password,
});
await user.save();
ctx.body = { success: true };
} catch (e) {
next(e);
}
return next();
};
Функция получает правильные данные, но await User.findOne().exec();
никогда не возвращается и зависает.
Я думаю, что проблема в том, что если я удаляю, код выполняется нормально. Если я переключусь на Promise, например... find().then
Это тоже сработает. async/await тоже работает, потому что если я перейду на await fetch() (для эмуляции асинхронности), он сработает... но вот моя конфигурация babel
{
"presets" : ["latest", "stage-0"],
"plugins": [
["module-resolver", {
"root": ["./src"]
}]
]
}
мангуст версии 4.7.0
.exec()
(хотя, вероятно, это не обязательно использовать). Кроме того, вы уверены, что это не исключение? Ваш код дважды вызываетnext
при возникновении исключения (один раз с аргументом ошибки, а затем сreturn next
). - person robertklep   schedule 27.11.2016