2015-07-22 4 views
0

У меня есть имя файла, который содержит Musicians.js:запись обновления в MongoDB

exports.update = function(req, res) { 
    var id = req.params.id; 
console.log("ID-->" + id); //I GET CORRECT ID HERE 

    var updates = req.body; 
//It does not update any records 
     Musician.update({"_id":id}, req.body, 
     function (err, numberAffected) { 
      if (err) return console.log(err); 
      console.log('Updated %d musicians', numberAffected); //gives 0 updated musicians 
      return res.send(202); 


     }); 
    }; 

В routes.js

app.put('/musicians/:id', musicians.update); 

Я называю это так:

$scope.updateTodo = function(id) { 
     console.log("INSIDE UPDATE TO DO"); 
     console.log(id); 
     $scope.navMode = 'updateMusician'; 
     $scope.getOneTodo(id,function(data){ 
       var x=data; 
       console.log("X" + x); 
     $scope.formData.name= x.name; 
     $scope.formData.band = x.band; 
     $scope.formData.instrument = x.instrument; 
     }); 
     $http.put('/musicians/' + id) 
      .success(function(data) { 
       $scope.todos = data; 
       console.log("UPDATED||||||||||||||||||||||||||||||||||||||"); 
         console.log(data); 
      }) 
      .error(function(data) { 
       console.log('Error: ' + data); 
      }); 


    }; 

Я получаю 0 ответы обновлены.

Что может быть неправильным? Почему он не обновляет записи даже для соответствия идентификаторам?

Как исправить это?

ответ

1

Пожалуйста, попробуйте следующее:

exports.update = function(req, res) { 
 
    var Musician = req.musician; 
 

 
    Musician = _extend(Musician, req.body); 
 

 
    Musician.save(function (err, numberAffected) { 
 
     if (err) { 
 
     console.log(err); 
 
     return; 
 
     } 
 
     console.log('Updated %d musicians', numberAffected); 
 
     res.jsonp(Musician); 
 
    }); 
 
};

если нет, то попробуйте изменить это:

var Musician = req.musician;

к этому:

var Musician = req.Musician;

Позвольте мне знать, если это помогло.

+0

Проверьте обновление –

+0

@SimranKaur У вас есть поле _id. Введите db.Musicians.find() в манго, и вы увидите его. Но вы попробовали мой ответ? Есть ли ошибки? – Tomasz

+0

Проверьте обновленный вопрос. Похоже, у меня были разные проблемы. –