refactor(groups): more res.json(500) => next(err) conversions, for
unified error-handling in express middleware
This commit is contained in:
+24
-26
@@ -40,9 +40,9 @@ var populateQuery = function(type, q){
|
||||
}
|
||||
|
||||
|
||||
api.getMember = function(req, res) {
|
||||
api.getMember = function(req, res, next) {
|
||||
User.findById(req.params.uid).select(partyFields).exec(function(err, user){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
if (!user) return res.json(400,{err:'User not found'});
|
||||
res.json(user);
|
||||
})
|
||||
@@ -52,7 +52,7 @@ api.getMember = function(req, res) {
|
||||
* Fetch groups list. This no longer returns party or tavern, as those can be requested indivdually
|
||||
* as /groups/party or /groups/tavern
|
||||
*/
|
||||
api.list = function(req, res) {
|
||||
api.list = function(req, res, next) {
|
||||
var user = res.locals.user;
|
||||
var groupFields = 'name description memberCount balance leader';
|
||||
var sort = '-memberCount';
|
||||
@@ -102,7 +102,7 @@ api.list = function(req, res) {
|
||||
}
|
||||
|
||||
}, function(err, results){
|
||||
if (err) return res.json(500, {err: err});
|
||||
if (err) return next(err);
|
||||
// ngResource expects everything as arrays. We used to send it down as a structured object: {public:[], party:{}, guilds:[], tavern:{}}
|
||||
// but unfortunately ngResource top-level attrs are considered the ngModels in the list, so we had to do weird stuff and multiple
|
||||
// requests to get it to work properly. Instead, we're not depending on the client to do filtering / organization, and we're
|
||||
@@ -172,7 +172,7 @@ api.create = function(req, res, next) {
|
||||
saved.populate('members', nameFields, cb);
|
||||
}
|
||||
], function(err, populated){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
return res.json(populated);
|
||||
})
|
||||
}
|
||||
@@ -190,8 +190,7 @@ api.update = function(req, res, next) {
|
||||
});
|
||||
|
||||
group.save(function(err, saved){
|
||||
if (err) return res.json(500,{err:err});
|
||||
|
||||
if (err) return next(err);
|
||||
res.send(204);
|
||||
});
|
||||
}
|
||||
@@ -200,7 +199,7 @@ api.attachGroup = function(req, res, next) {
|
||||
var gid = req.params.gid;
|
||||
var q = (gid == 'party') ? Group.findOne({type: 'party', members: {'$in': [res.locals.user._id]}}) : Group.findById(gid);
|
||||
q.exec(function(err, group){
|
||||
if(err) return res.json(500, {err:err});
|
||||
if(err) return next(err);
|
||||
if(!group) return res.json(404, {err: "Group not found"});
|
||||
res.locals.group = group;
|
||||
next();
|
||||
@@ -228,12 +227,12 @@ api.postChat = function(req, res, next) {
|
||||
}
|
||||
|
||||
group.save(function(err, saved){
|
||||
if (err) return res.json(500, {err:err});
|
||||
if (err) return next(err);
|
||||
return chatUpdated ? res.json({chat: group.chat}) : res.json({message: saved.chat[0]});
|
||||
});
|
||||
}
|
||||
|
||||
api.deleteChatMessage = function(req, res){
|
||||
api.deleteChatMessage = function(req, res, next){
|
||||
var user = res.locals.user
|
||||
var group = res.locals.group;
|
||||
var message = _.find(group.chat, {id: req.params.messageId});
|
||||
@@ -247,7 +246,7 @@ api.deleteChatMessage = function(req, res){
|
||||
var chatUpdated = (lastClientMsg && group.chat && group.chat[0] && group.chat[0].id !== lastClientMsg) ? true : false;
|
||||
|
||||
Group.update({_id:group._id}, {$pull:{chat:{id: req.params.messageId}}}, function(err){
|
||||
if(err) return res.json(500, {err: err});
|
||||
if(err) return next(err);
|
||||
return chatUpdated ? res.json({chat: group.chat}) : res.send(204);
|
||||
});
|
||||
}
|
||||
@@ -279,7 +278,7 @@ api.likeChatMessage = function(req, res, next) {
|
||||
})
|
||||
}
|
||||
|
||||
api.join = function(req, res) {
|
||||
api.join = function(req, res, next) {
|
||||
var user = res.locals.user,
|
||||
group = res.locals.group;
|
||||
|
||||
@@ -311,7 +310,7 @@ api.join = function(req, res) {
|
||||
populateQuery(group.type, Group.findById(group._id)).exec(cb);
|
||||
}
|
||||
], function(err, results){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
|
||||
// Return the group? Or not?
|
||||
res.json(results[1]);
|
||||
@@ -382,7 +381,7 @@ api.invite = function(req, res, next) {
|
||||
var user = res.locals.user;
|
||||
|
||||
User.findById(uuid, function(err,invite){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
if (!invite)
|
||||
return res.json(400,{err:'User with id "' + uuid + '" not found'});
|
||||
if (group.type == 'guild') {
|
||||
@@ -395,7 +394,7 @@ api.invite = function(req, res, next) {
|
||||
if (invite.invitations && !_.isEmpty(invite.invitations.party))
|
||||
return res.json(400,{err:"User already pending invitation."});
|
||||
Group.find({type:'party', members:{$in:[uuid]}}, function(err, groups){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
if (!_.isEmpty(groups))
|
||||
return res.json(400,{err:"User already in a party."})
|
||||
sendInvite();
|
||||
@@ -423,7 +422,7 @@ api.invite = function(req, res, next) {
|
||||
populateQuery(group.type, Group.findById(group._id)).exec(cb);
|
||||
}
|
||||
], function(err, results){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
|
||||
// Have to return whole group and its members for angular to show the invited user
|
||||
res.json(results[2]);
|
||||
@@ -443,7 +442,7 @@ api.removeMember = function(req, res, next){
|
||||
|
||||
if(_.contains(group.members, uuid)){
|
||||
Group.update({_id:group._id},{$pull:{members:uuid},$inc:{memberCount:-1}}, function(err, saved){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
|
||||
// Sending an empty 204 because Group.update doesn't return the group
|
||||
// see http://mongoosejs.com/docs/api.html#model_Model.update
|
||||
@@ -466,7 +465,7 @@ api.removeMember = function(req, res, next){
|
||||
Group.update({_id:group._id},{$pull:{invites:uuid}}, cb);
|
||||
}
|
||||
], function(err, results){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
|
||||
// Sending an empty 204 because Group.update doesn't return the group
|
||||
// see http://mongoosejs.com/docs/api.html#model_Model.update
|
||||
@@ -483,7 +482,7 @@ api.removeMember = function(req, res, next){
|
||||
// Quests
|
||||
// ------------------------------------
|
||||
|
||||
questStart = function(req, res) {
|
||||
questStart = function(req, res, next) {
|
||||
var group = res.locals.group;
|
||||
var user = res.locals.user;
|
||||
var force = req.query.force;
|
||||
@@ -494,7 +493,7 @@ questStart = function(req, res) {
|
||||
var statuses = _.values(group.quest.members);
|
||||
if (!force && (~statuses.indexOf(undefined) || ~statuses.indexOf(null))) {
|
||||
return group.save(function(err,saved){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
res.json(saved);
|
||||
})
|
||||
}
|
||||
@@ -536,12 +535,12 @@ questStart = function(req, res) {
|
||||
parallel.push(function(cb2){group.save(cb2)});
|
||||
|
||||
async.parallel(parallel,function(err, results){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
return res.json(group);
|
||||
});
|
||||
}
|
||||
|
||||
api.questAccept = function(req, res) {
|
||||
api.questAccept = function(req, res, next) {
|
||||
var group = res.locals.group;
|
||||
var user = res.locals.user;
|
||||
var key = req.query.key;
|
||||
@@ -572,8 +571,7 @@ api.questAccept = function(req, res) {
|
||||
if (!group.quest.key) return res.json(400,{err:'No quest invitation has been sent out yet.'});
|
||||
group.quest.members[user._id] = true;
|
||||
}
|
||||
|
||||
questStart(req,res);
|
||||
questStart(req,res,next);
|
||||
}
|
||||
|
||||
api.questReject = function(req, res, next) {
|
||||
@@ -582,7 +580,7 @@ api.questReject = function(req, res, next) {
|
||||
|
||||
if (!group.quest.key) return res.json(400,{err:'No quest invitation has been sent out yet.'});
|
||||
group.quest.members[user._id] = false;
|
||||
questStart(req,res);
|
||||
questStart(req,res,next);
|
||||
}
|
||||
|
||||
|
||||
@@ -611,7 +609,7 @@ api.questAbort = function(req, res, next){
|
||||
group.save(cb);
|
||||
}
|
||||
], function(err){
|
||||
if (err) return res.json(500,{err:err});
|
||||
if (err) return next(err);
|
||||
res.json(group);
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user