Я использую промежуточное программное обеспечение, которое обрабатывает логику для создания новых пользователей в db. Эта функция просто проверяет, существует ли почтовый адрес пользователя, если он не создает новый документ, иначе он просто отправит клиенту ошибку.Сеть ExpressJS обещает несколько раз вызвать функцию next()
Проблема в этой функции (ниже) является то, что следующая функция() промежуточного слоя вызывается дважды, когда пользователь электронной почты уже существует в БД
Я мог бы просто не цепи эти два обещания и просто использовать обещание внутри другого, но если у кого-то есть хороший образец для решения такого рода ошибок, возможно, мой код ошибочен, или я пропустил что-то о обещаниях.
create: function(req, res, next) {
// Check if email already exist
userDB.byEmail(req.body.email).then(function(doc) {
if (doc) {
res.setError('This email already exists', 409);
return next();
}
// Return other Promise
return userDB.create(req.body);
}).then(function(doc) {
res.setResponse(doc, 200);
return next();
}).catch(function(err) {
res.setError('Service seems to be unavailables', 503);
return next();
});
},
Примечание: Я использую личные методы res.setError() или res.setResponse() , которые просто помочь мне управлять запрос состояния, то я использую res.send с следующей функцией промежуточного слоя
< спасибо, ребята 3
Спасибо за ваш ответ. Это то, что я думал. - Является ли это хорошим шаблоном для ошибок в этом плане в обещаниях? Я новичок в обещаниях, и я просто использовал шаблон nodeJS function (err, res), потому что callback не позволяет использовать try/catch, и поэтому использует throw Error –