2014-01-28 4 views
0

나는 포럼에 대한 다음과 같은 기본 API를 가지고 :ngResource : 특정 항목에 POST 요청을 만들기

  • POST /topics (만든 새 주제)
  • GET /topics
  • GET /topics/1 (수 (모든 주제를 얻을) ID "1"을 주제)

그리고 난 다음 추가 할 :

  • POST /topics/1 나는 다음과 같은 코드 (관련 발췌) 시도

(ID "1"로 주제에 회신을 추가),하지만 작동되지 않았습니다

.controller('TopicReplyController', function ($scope, $routeParams, Topics) { 
    'use strict'; 

    var topicId = Number($routeParams.topicId); 

    Topics.get({topicId: topicId}, function (res) { 
     $scope.topic = res; 
    }); 

    $scope.postReply = function() { 
     var newPost = new Topics({ 
      topicId: topicId 
     }); 

     newPost.text = $scope.postText; 
     newPost.$save(); // Should post to /topics/whatever, not just /topics 
    }; 
}) 
.factory('Topics', function ($resource) { 
    'use strict'; 

    return $resource('/topics/:topicId', {topicId: '@id'}); 
}); 

그것은 단지를 만든다 /topics으로 요청하면 작동하지 않습니다.

어떻게하면이 아이디어를 얻을 수 있습니까? $resource docs 가입일

+0

/topics/1을 업데이트하거나 ID 1로 새로운 '주제'를 만드시겠습니까? – Adrian

+0

/topic/1에 POST 요청을 보내야하는 ID 1의 항목에 새 게시물을 추가하려고합니다. 드문 일이지만 여전히 RESTful입니다. – callumacrae

답변

1

:이 파라미터의 값은 상기 데이터 객체로부터 추출 후 파라미터 값 @ 접두사 경우

.` (유용 작업을 비 GET) topicId이 사용중인 개체의 id이되도록 지정하고 있습니다.

$resource('/topics/:topicId', {topicId: '@id'}); 
          // ^^^^^^^^^^^^^^ 
          // Here is where you are mapping it 

당신은 URL에 topicIdid를 매핑 할 수 있도록 id: topicId를 전달하려는.

var newPost = new Topics({ 
    id: topicId 
}); 
+0

감사합니다. 그것은 결국 어떻게 끝내는가가 아니라 대신'. $ save()'에 객체로 지정했습니다. 그러나 나중에 당신의 동작을 테스트하고 해결책으로 표시 할 것입니다. if 그것은 잘 작동합니다. – callumacrae