0

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!');
  });

});
}
`

2 Answers 2

1

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);
Sign up to request clarification or add additional context in comments.

Comments

0

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');
 });

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.