2014-10-30 3 views
0

을 얻기 위해 나는 AngularJS와의 $ 자원의 개념은,이 자원을 나타내는 객체가 (,, 업데이 트를 얻을 삭제)올바른 패턴 관련 데이터

  • 자원을 반환하는 것을 알 수
  • 이 리소스 (쿼리)를 나타내는 개체 목록

한 번에 필요한 정보를 모두 제공하지 않는 백엔드를 사용하고 있습니다. 예를 들어

: /User/:id

user = User.get({id: userId});는 사용자를 반환합니다. 큰. 여기

{ count: 17 }

내가 끼 었어 :

/User/:id/count=friend

및 반환 : 나는 그의 친구의 번호를해야하는 경우

, 나는 또 다른 요청 느릅 나무처럼 될 것이 내 user 변수를 사용할 수 없거나 사용자 객체가 손실됩니다. 게다가 결과는 내 사용자를 대표하지 않는 숫자가 될 것입니다.

'더러운'방법은이 경우 $http으로 돌아가 결과를 user.friendsNumber = data.count에 할당하는 것입니다.

하지만 여전히 깨끗하지는 않습니다. user.$put() 일 경우 재 할당되므로 내 user.friendsNumber이 손실됩니다.

올바르게 처리하는 올바른 방법은 무엇입니까?

+0

맞춤 작업을 선언 하시겠습니까? '$ resource (url, [paramDefaults], [actions], options); ' – merlin

답변

2

이렇게 동작을 지정할 수 있으며 추가 매개 변수가 일반 get 변수가 될 것이라고 생각합니다.

angoApp.factory('User', function($resource) { 
    return $resource('/User/:id', { 
    id: '@id' 
    }, { 
    countFriends: { 
     method: 'GET', 
     params: { 
     count: 'friends' 
     } 
    } 
}); 

... 

User.$countFriends({id:123}); 
//This should call /User/123?count=friends 
+0

사용자 지정 작업을 추가하고 요청을 수행해도 문제가 없습니다. 현재이 작업을 수행하고 있습니다. 그러나 나는 이것이 깨끗하지 않은 것 같은 느낌이 든다. 내가 관심을 갖는 것은'countFriend'와 같은 속성을 부모'user' ressource (이미 해결됨)에 할당하는 것입니다.이 속성은 때때로 업데이트되기 때문에 새로 할당 된 속성 인'countFriend'를 잃어 버리게됩니다. – Laurent

+0

로컬 저장소와 같은 지속성을 찾는 것처럼 들리는가요? 리소스는 CRUD를 관리하지만 응답 데이터를 유지 관리하는 것은 해당 객체를 처리하는 방법에 불과합니다. – Dylan