User.findOneAndUpdate(query, fieldsToUpdate, {new: true}, function(err, user) {
      if (err) {
        res.status(400).send(errorHandler.getErrorResponse(2));
      } else if (!user) {
        res.status(400).send(errorHandler.getErrorResponse(501));
      } else {

        // Find friend and friend's friends array will add current user
        User.findById(newFriendRequest.requester, function(err, friend) {
          if (!err && friend) {
            var friendQuery = {'_id': friend._id};
            var friendFieldsToUpdate = _.pick(friend, 'friends');
            friendFieldsToUpdate.friends.push(newFriendRequest.receiver);

            User.findOneAndUpdate(friendQuery, friendFieldsToUpdate, {new: true}, function(err, friendUser) {
              if (err) {
                res.status(400).send(errorHandler.getErrorResponse(2));
              } else if (!friendUser) {
                res.status(400).send(errorHandler.getErrorResponse(501));
              } else {
                res.send('Friend is added.');
              }
            });
          } else {
            res.status(400).send({
              message: 'Friend is not found.'
            });
          }
        });
      }
    });
 User.findOneAndUpdate(friendQuery, friendFieldsToUpdate, {new: true}, function(err, friendUser) {
   if (err) {
     res.status(400).send(errorHandler.getErrorResponse(2));
   } else if (!friendUser) {
     res.status(400).send(errorHandler.getErrorResponse(501));
   } else {
     res.send('Friend is removed.');
   }
 });
  .exec(function(err, user) {

    if (err) {
      console.log('reach');
      res.status(400).send(errorHandler.getErrorResponse(2));
    } else if (!user) {
      console.log('reach1');
      res.status(400).send(errorHandler.getErrorResponse(501));
    } else {
      res.jsonp(user.friends);
    }
  });
 request.save(function(err) {
   if (err) {
     return res.status(400).send(errorHandler.getErrorResponse(2));
   } else {
     res.jsonp(request);
   }
 });
 User.find({username: new RegExp(req.query.username, 'i')}).sort('-created').exec(function(err, users) {
   if (err) {
     return res.status(400).send(errorHandler.getErrorResponse(2));
   } else {
     res.jsonp(users);
   }
 });
    User.findOneAndUpdate(query, fieldsToUpdate, {new: true}, function(err, user) {
      if (err) {
        res.status(400).send(errorHandler.getErrorResponse(2));
      } else if (!user) {
        res.status(400).send(errorHandler.getErrorResponse(501));
      } else {

        var friendQuery = {'_id': friend._id};
        var friendFieldsToUpdate = _.pick(friend, 'friends');
        var userIndex = friendFieldsToUpdate.friends.indexOf(user._id);
        friendFieldsToUpdate.friends.splice(userIndex, 1);

        User.findOneAndUpdate(friendQuery, friendFieldsToUpdate, {new: true}, function(err, friendUser) {
          if (err) {
            res.status(400).send(errorHandler.getErrorResponse(2));
          } else if (!friendUser) {
            res.status(400).send(errorHandler.getErrorResponse(501));
          } else {
            res.send('Friend is removed.');
          }
        });
      }
    });