【发布时间】:2015-04-12 13:48:26
【问题描述】:
我正在使用 Node.js、restify 和 mongoose 编写一个非常简单的 RESTful API,但代码变得复杂且冗长。这是由我每次进行查询时必须做的所有检查引起的。例如,下面的代码显示了端点 POST /users/:user1/follow/:user2 的控制器。
exports.followUser = function(req, res, next) {
User.findOne({ username: req.params.user1 }, function(err, user1) {
if (err) {
res.status(500);
res.json({ type: false, data: 'Error occurred: ' + err });
} else {
if (user1) {
User.findOne({ username: req.params.user2 }, function(err, user2) {
if (err) {
res.status(500);
res.json({ type: false, data: 'Error occurred: ' + err });
} else {
if (user2) {
user2.followers.push(user1);
user2.save();
res.json({
type: true,
data: 'User ' + req.params.user1 + ' is now following user ' + req.params.user2
});
} else {
res.json({
type: false,
data: 'User ' + req.params.user2 + ' not found'
});
}
}
});
} else {
res.json({
type: false,
data: 'User ' + req.params.user1 + ' not found'
});
}
}
});
};
如何简化此代码?如您所见,我正在检查每个 findOne 的结果以了解收到的用户是否存在,并且我还为每个错误返回 json 答案,但这很乏味。有没有办法自动化这个?
【问题讨论】:
标签: node.js mongoose refactoring restify