diff --git a/backend/controllers/UserController.js b/backend/controllers/UserController.js index 1601fc21..09c05fdd 100644 --- a/backend/controllers/UserController.js +++ b/backend/controllers/UserController.js @@ -125,8 +125,16 @@ function follow(req,res,next){ User.findOneAndUpdate({_id: req.params.id}, {$push: {following: req.body.id}}, {new: true}) .exec() .then((user)=>{ - res.status(200); - res.send({following: user.following}); + User.findOneAndUpdate({_id: req.body.id}, {$push: {followers: req.params.id}}, {new: true}) + .exec() + .then(()=>{ + res.status(200); + res.send({following: user.following}); + }) + .catch((err)=>{ + res.status(500); + res.send({err}); + }); }) .catch((err)=>{ res.status(500); @@ -138,8 +146,16 @@ function unfollow(req,res,next) { User.update({_id:req.params.id}, {$pull: {following: req.body.id}}, {new: true}) .exec() .then((user)=>{ - res.status(200); - res.send({following: user.following}); + User.update({_id:req.body.id}, {$pull: {followers: req.params.id}}, {new: true}) + .exec() + .then(()=>{ + res.status(200); + res.send({following: user.following}); + }) + .catch((err)=>{ + res.status(500); + res.send({err}); + }); }) .catch((err)=>{ res.status(500); @@ -147,6 +163,32 @@ function unfollow(req,res,next) { }); } +function getFollowers(req,res,next){ + User.findById(req.params.id) + .exec() + .then((user) => { + res.status(200); + res.send({following: user.followers}); + }) + .catch((err) => { + res.status(404); + res.send({err}); + }); +} + +function getFollowing(req,res,next){ + User.findById(req.params.id) + .exec() + .then((user) => { + res.status(200); + res.send({following: user.following}); + }) + .catch((err) => { + res.status(404); + res.send({err}); + }); +} + function deleteUser(req,res,next) { User.findOneAndDelete({_id: req.params.id}) .exec() @@ -329,6 +371,8 @@ module.exports = { unfollow, deleteUser, updateUser, + getFollowers, + getFollowing, getAvatar, getCover, addAvatar, @@ -337,4 +381,5 @@ module.exports = { updateCover, deleteAvatar, deleteCover -} \ No newline at end of file +} + diff --git a/backend/routes/users.js b/backend/routes/users.js index 3f29651f..28bce5dd 100644 --- a/backend/routes/users.js +++ b/backend/routes/users.js @@ -14,6 +14,8 @@ router.get('/', UserController.getAllUsers); // Get a specific user by an id. router.get('/:id', UserController.getUserById);//this should be last in code +router.get('/:id/followers', UserController.getFollowers); +router.get('/:id/following', UserController.getFollowing); // MEDIA ENDPOINTS