2015-01-16 53 views
1

我有一个应用程序,发布,获取和删除数据,我想添加'更新'功能,但我不知道它.. 我有一个节点。其中提到到节点API更新数据库与node.js和角

app.get('/api/feedbacks', function(req, res) { 

    // use mongoose to get all feedbacks in the database 
    getfeedbacks(res); 
}); 

// create feedback and send back all feedback after creation 
app.post('/api/feedbacks', function(req, res) { 
    // create a feedback, information comes from AJAX request from Angular 
    FeedBack.create(req.body, function(err, feedback) { 
     if (err) 
      res.send(err); 

     // get and return all the feedbacks after you create another 
     getfeedbacks(res); 
    }); 

}); 

// delete a feedback 
app.delete('/api/feedbacks/:feedback_id', function(req, res) { 
    FeedBack.remove({ 
     _id : req.params.feedback_id 
    }, function(err, feedback) { 
     if (err) 
      res.send(err); 

     getfeedbacks(res); 
    }); 
}); 

和这样的角度服务:

service.factory('FeedBacks', ['$http',function($http) { 
    return { 
     create : function(feedBackData) { 
      return $http.post('/api/feedbacks', feedBackData); 
     }, 
     get : function() { 
      return $http.get('/api/feedbacks'); 
     }, 
     delete : function(id) { 
      return $http.delete('/api/feedbacks/' + id); 
     } 
    } 
}]); 

这样我可以发布,获取和删除数据,有这样的API的js服务器。

我的目标是添加更新功能。

我已经试过节点:

// update a feedback 
app.put('/api/feedbacks/:feedback_id', function(req, res) { 
    // edit a feedback, information comes from AJAX request from Angular 
    FeedBack.put(req.body, function(err, feedback) { 
     if (err) 
      res.send(err); 

     // get and return all the feedbacks after you edit one 
     getfeedbacks(res); 
    }); 
}); 

对角服务:

update: function(editFeedId, editedFeed){ 
      return $http.put('/api/feedbacks/' + editFeedId, editedFeed); 
} 

控制器的样子:

$scope.editFeed = function(id) { 
    $scope.editFeedId = id; 
    $scope.editedFeed = 'replace this txt' 


    FeedBacks.update($scope.editFeedId, $scope.editedFeed) 
     // if successful creation, call our get function to get all the new 
feedBacks 
     .success(function(data) { 
      console.log('updated'); 
      $scope.feedbacks = data; 
     }); 
}; 

我得到500错误,因为我执行editFeed() 。我无法想象配置!我在哪里做错了?有小费吗?

非常感谢!

+0

你Node.js的服务器上使用快递,对不对?如果是的话,你使用express ** body-parser **吗?如果你没有使用它,你的req.body将返回null,它不会保存数据。这就是为什么状态500. –

+1

@AndreyLuiz是的,我使用快递和我使用body-parser .. – Mar

回答

2

我假设你在这里使用Mongo,在这种情况下你的更新语句是不正确的。

它应该是这样的:

app.put('/api/feedbacks/:feedback_id', function(req, res) { 
     FeedBack.update({_id: req.params.feedback_id}, req.body, function(err, feedback) { 
     if (err) 
      res.send(err); 

     // get and return all the feedbacks after you edit one 
     getfeedbacks(res); 
    }); 
});