2014-01-28 4 views
1

Я получил угловую-экспресс приложение с мангустов и MongoDBредактировать сообщения с помощью экспресс-REST API

для угловой части у меня есть:

.controller('EditPostCtrl', ['$scope', '$http', '$location', '$routeParams', function($scope, $http, $location, $routeParams){ 
    // populate the form 
    $scope.form = {}; 
    $http.get('/api/post/' + $routeParams.post_id) 
     .success(function(data){ 
      $scope.form = data; 
     }); 

    // save changes and redirect 
    $scope.editPost = function(){ 
     $http.put('/api/post/' + $routeParams.post_id, $scope.form) 
      .success(function(data){ 
       $location.url('/post/' + $routeParams.post_id); 
      }); 
    }; 
}]) 

Тогда для экспресс-части у меня есть маршрут:

app.put('/api/post/:post_id', posts.editPost); 


exports.editPost = function(req, res){ 
    var updatedPost = { 
     title: req.body.title, 
     text: req.body.text, 
     created: req.body.created 
    }; 

    Post.update({ _id: req.body._id }, updatedPost, function(err, affected){ 
     console.log('affected %d', affected); 
    }); 
}; 

после того как я запустить сервер я могу обновить сообщения, но после редактирования я не попадаю в '/post/' + $routeParams.post_id как я объявляю в угловой. Что мне нужно в функции editPost?

ответ

3

Вам нужно отправить и ответить клиенту, например, что все было обновлено, но содержимое не возвращается (204):

exports.editPost = function(req, res){ 
    var updatedPost = { 
     title: req.body.title, 
     text: req.body.text, 
     created: req.body.created 
    }; 

    Post.update({ _id: req.body._id }, updatedPost, function(err, affected){ 
     console.log('affected %d', affected); 

     //returns with no body, but OK: 
     //res.send(204); 
     //returns with update entity as body: 
     res.send(200, updatedPost); 
    }); 
}; 

Смотрите также Express API.

+0

okay это работает, но я никогда не видел, чтобы 204 использовался в коде других людей, есть ли лучший способ редактировать записи, учитывая угловое у меня? –

+0

Ну, можно утверждать, что после обновления сервер должен вернуть обновленный объект как тело с 200. Я добавил пример кода - я надеюсь, что правильно понял mongoose :) – Sonata

+1

Вы также можете попробовать использовать [$ resource] (http://code.angularjs.org/1.2.1/docs/api/ngResource.$resource) и создание ваших экспресс-сервисов соответственно – Sonata

Смежные вопросы