Join the Stack Overflow Community
Stack Overflow is a community of 6.4 million programmers, just like you, helping each other.
Join them; it only takes a minute:
Sign up

I need to update my mongodb using nodejs and angularjs on the front end. I have the below code but i get error like `TypeError: Cannot read property 'put' of undefined

My angularjs controller :

myApp.controller('userController', ['$scope', '$resource', 'AuthService','iden','$http', function ($scope, $resource, AuthService,iden,$http) {

console.log(usersOnline);
var Meetup = $resource('/api/user', {},{
  query: {method: 'get', isArray: true}
});

$scope.users = [];
$scope.userss = [];
$scope.text='mikyas';
  Meetup.query({text: usersOnline}).$promise.then(function (results) {
    $scope.users = results;
  }, function(error) {
  // console.log(error);
   $scope.meetups = [];
});
  console.log(usersOnline);


function getUser(iden,$http) {
//return promise here
  var Users = $resource('/api/users', {},{
  query: {method: 'get', isArray: true}
  });

  $scope.usersOnline='a';
    return Users.query({username: usersOnline}).$promise
    //other code as is

}

$scope.id='cpasgrave';
$scope.lol=getUser();
$scope.lol.then(function(user,$http){
console.log(user[0]._id);
iden=user[0]._id;
 $scope.userss = user;
 console.log(iden);

$http.put('/api/updateUser' + user[0]._id, user[0]);
});
console.log(iden);


}]);

And my api on the server side : *

module.exports.updateUser = function (req, res) {
var id = req.body.id;
User.findById(id, function(err, user) {
  if (err) throw err;

  // change the users location
  user.auto = 'true';

  // save the user
  user.save(function(err) {
    if (err) throw err;

    console.log('User successfully updated!');
  });

});
}
`
share|improve this question

Remove the $http argument in your $scope.lol.then(function(user,$http) function.

$scope.lol.then(function(user){
  console.log(user[0]._id);
  iden=user[0]._id;
  $scope.userss = user;
  console.log(iden);

  $http.put('/api/updateUser' + user[0]._id, user[0]);
});

Also, if you define getUser (iden, $http), make sure you put correct arguments when you call it...

$scope.id='cpasgrave';
$scope.lol=getUser(iden, $http);
share|improve this answer

try replacing this:

 $http.put('/api/updateUser' + user[0]._id, user[0]);
 });

with this:

 $http({
    method: 'PUT',
    url: '/api/updateUser' + user[0]._id, user[0]
 }).then(function successCallback(response) {
     console.log('put success');
 }, function errorCallback(response) {
     console.log('put failed');
 });
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.