【发布时间】:2017-03-31 05:46:55
【问题描述】:
我正在使用一个中间件来处理在数据库中创建新用户的逻辑。这个函数只是检查用户邮箱是否已经存在,如果不存在则创建新文档,否则它只是向客户端发送一个错误。
这个函数(下)的问题是,当用户电子邮件已经存在于数据库中时,next() 中间件函数被调用了两次
我可以不将这两个 Promise 链接起来,而只是在另一个 Promise 中使用一个 Promise,但如果有人有一个很好的模式来解决这种错误处理,可能我的代码是错误的,或者我错过了关于 Promise 的一些内容。
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 下一个中间件函数
谢谢大家
【问题讨论】:
标签: javascript node.js express middleware es6-promise