18186950
如何解决在各种检查的过程中, 记录返回的错误code,并且返回给前端
以前是直接 return
function(req, res) {
var user = req.body;
if (!user.username) {
return res.json({
msg: 'no username',
code: 1
});
}
if (!user.password) {
return res.json({
msg: 'no password',
code: 2
});
}
if (!user.code) {
return res.json({
msg: 'no code',
code: 3
});
}
return checkCode(user)
.then(function(data) {
return checkPassword(user);
})
.then(function() {
return res.json({
msg: 'login success'
});
})
.catch(function(err) {
console.warn(err);
return res.json({
msg: 'login fail',
code: 4
});
});
}
但是如果用 Promise 包装过后, return 只是到下一个 Promise, 下面的写法 在bb3.0+ 中会 warning Promise.reject需要一个error
有没有一种比较好的解决方式呢?
function(req, res) {
var user = req.body;
return Promise
.resolve(function() {
if (!user.username) {
return Promise.reject({
msg: 'no username',
code: 1
});
}
if (!user.password) {
return Promise.reject({
msg: 'no password',
code: 2
});
}
if (!user.code) {
return Promise.reject({
msg: 'no code',
code: 3
});
}
return checkCode(user)
.then(function(data) {
return checkPassword(user);
});
})
.then(function() {
return res.json({
msg: 'login success'
});
})
.catch(function(err) {
/**
err 可能是 no password 或者 no code 等各种错误
**/
return res.json(err);
});
}