두 개의 다른 REST API에서 Angular의 $ resource 결과를 어떻게 수정할 수 있습니까?

페카

사용해야하는 REST API가 두 개 있습니다. 하나는 개발 목적으로 Mongolab에서 가져오고 하나는 현재 액세스 할 수없는 실제 API에서 가져옵니다. 문제는 이들에서 ID가 약간 다르게 처리되고 객체 구조가 다르다는 것입니다. Mongo는 object._id.$oid표기법과 실제 API object.ID표기법을 사용합니다. Mongolab 리소스는 다음과 같습니다.

app.factory('Items', function ($resource) {
  var items = $resource('https://api.mongolab.com/api/1/databases/x/collections/items/:id',
    {
      apiKey:'x',
      id:'@_id.$oid'
    }
  });
  return items;
});

그리고 쿼리 호출 (현재 사용 중) :

$scope.items = Items.query({}, function () {
  if (API == 'Mongo') {
    angular.forEach($scope.items, function(item) {
      item.ID = item._id.$oid;
    });
  };
});

모든 쿼리 호출 또는 링크에서 코드를 수정하지 않고 다른 API를 쉽게 전환 할 수 있기를 원합니다 (리소스 ID가있는 수십 개의 호출 및 링크가 있습니다). 그래서 API == 'Mongo'수표를 상위 레벨 로 옮기고 싶습니다 forEach. Items리소스를 생성하는 공장에서 직접 ID 변경을 시도 했지만 그렇게 작동하지 않습니다. 결과가 채워지기 전에 직접 결과를 수정하려면 어떻게해야 query합니까?

아니면 다른 API에 대해 다른 분기를 만들어야합니까?

알렉스

두 개의 별개의 공장을 추가하고 "API"변수의 값에 따라 필요한 것을 쿼리 할 수 ​​있다고 생각합니다.

app.factory('ItemsApi', function ($resource) {
  var items = $resource('https://api.mongolab.com/api/1/databases/x/collections/items/:id',
    {
      apiKOey:'x',
      id:'@_id.$oid'
    }
  });
  return items;
});
app.factory('ItemsMongo', function ($resource) {
      var items = $resource('https://api.mongolab.com/api/1/databases/x/collections/items/:id',
      {
        apiKey:'x',
        id:'@id'
      }
    });
    return items;
 });

그런 다음 리소스 팩토리 대신 컨트롤러에서 다음을 사용할 수 있습니다.

if (API == 'Mongo') 
  $scope.items = ItemsApi.query();
else
  $scope.items = ItemsMongo.query();

최신 정보:

이것이 현재 가지고있는 것이라면 반환 된 배열의 각 요소에 추가 속성을 추가하는 것을 고려할 수 있습니다. 기본 팩토리 query () 메서드를 재정의 한 다음 중복 ID 필드를 추가하는 각 요소를 반복하여이를 수행 할 수 있습니다. 이것 좀 봐:

$resource('https://../:id',{id: '@id'}, {
 query: { 
   isArray: true,
   method: 'GET',
   params: {},
   transformResponse: function (data) {
     var wrapped = angular.fromJson(data); 
     angular.forEach(wrapped, function(item) {
       --do something to wrapped items -- 
     });
     return wrapped;
 }
 } 

transformResponseangular.forEach 가 트릭을 수행해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

mysql 쿼리에서 두 개의 다른 뷰를 어떻게 연결할 수 있습니까?

분류에서Dev

두 개의 다른 목록 필터의 결과를 어떻게 생각할 수 있습니까?

분류에서Dev

두 개의 다른 클래스에서 초기화 할 수있는 변수를 어떻게 정의 할 수 있습니까?

분류에서Dev

OpenLayers에서 두 개의 다른 벡터 레이어를 어떻게 구별 할 수 있습니까?

분류에서Dev

다른 페이지에서 오는 두 개의 데이터를 어떻게 반환 할 수 있습니까?

분류에서Dev

두 Instagram API의 결과를 어떻게 병합 할 수 있습니까?

분류에서Dev

어떻게 단일 파일을 두 개의 다른 스트림에 동시에 연결할 수 있습니까?

분류에서Dev

다른 함수에서 socket.on의 결과를 어떻게 수신 할 수 있습니까?

분류에서Dev

두 개의 다른 테이블 세부 정보를 어떻게 합산 할 수 있습니까?

분류에서Dev

문자열에서 특정 단어의 다음 단어 두 개를 어떻게 얻을 수 있습니까?

분류에서Dev

Excel에서 두 개의 IF 문을 어떻게 결합 할 수 있습니까?

분류에서Dev

한 mysql 쿼리의 결과를 PHP의 다른 쿼리에서 어떻게 사용할 수 있습니까?

분류에서Dev

어떻게 SQL에 두 개의 서로 다른 요인에 의해 정보의 순서를 필터링 할 수 있습니다?

분류에서Dev

두 개의 다른 추상 클래스에서 특정 메소드를 어떻게 구현할 수 있습니까?

분류에서Dev

Linux의 파일에서 패턴이 다른 두 줄을 어떻게 결합 할 수 있습니까?

분류에서Dev

Oracle SQL 두 개의 다른 열에있는 열의 값을 어떻게 구분할 수 있습니까?

분류에서Dev

다른 쿼리의 LIKE 조건에서 SQL 쿼리 결과를 어떻게 사용할 수 있습니까?

분류에서Dev

조건이있는 두 개의 다른 배열을 어떻게 결합 할 수 있습니까?

분류에서Dev

sailjs의 rest api 결과에 파일을 지정하는 방법을 어떻게 제한 할 수 있습니까?

분류에서Dev

행의 SQL에서 두 값을 곱하고 결과를 같은 행의 다른 셀에 어떻게 넣을 수 있습니까?

분류에서Dev

함수의 결과를 C의 다른 함수에 대한 매개 변수로 어떻게 사용할 수 있습니까?

분류에서Dev

두 개의 다른 클래스로 패널에서 어떻게 칠할 수 있습니까?

분류에서Dev

React jsx에서 "+"두 개의 다른 값을 어떻게 추가 할 수 있습니까?

분류에서Dev

Ubuntu에서 1 개의 파일을 N 개의 다른 파일과 어떻게 비교할 수 있습니까?

분류에서Dev

Bash에서 두 개의 awk 결과 값을 어떻게 비교할 수 있습니까?

분류에서Dev

한 점이 다른 두 점으로 정의 된 선에 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

두 번째 SQL 문에서 SQL 문의 결과를 어떻게 사용할 수 있습니까? | PHP

분류에서Dev

어떻게 하나의 jsonschema를 다른 jsonschema에 연결할 수 있습니까?

분류에서Dev

지도를 할 때 ID가 모두있는 경우 어떻게 2 개의 다른 객체 배열에서 검색 할 수 있습니까?

Related 관련 기사

  1. 1

    mysql 쿼리에서 두 개의 다른 뷰를 어떻게 연결할 수 있습니까?

  2. 2

    두 개의 다른 목록 필터의 결과를 어떻게 생각할 수 있습니까?

  3. 3

    두 개의 다른 클래스에서 초기화 할 수있는 변수를 어떻게 정의 할 수 있습니까?

  4. 4

    OpenLayers에서 두 개의 다른 벡터 레이어를 어떻게 구별 할 수 있습니까?

  5. 5

    다른 페이지에서 오는 두 개의 데이터를 어떻게 반환 할 수 있습니까?

  6. 6

    두 Instagram API의 결과를 어떻게 병합 할 수 있습니까?

  7. 7

    어떻게 단일 파일을 두 개의 다른 스트림에 동시에 연결할 수 있습니까?

  8. 8

    다른 함수에서 socket.on의 결과를 어떻게 수신 할 수 있습니까?

  9. 9

    두 개의 다른 테이블 세부 정보를 어떻게 합산 할 수 있습니까?

  10. 10

    문자열에서 특정 단어의 다음 단어 두 개를 어떻게 얻을 수 있습니까?

  11. 11

    Excel에서 두 개의 IF 문을 어떻게 결합 할 수 있습니까?

  12. 12

    한 mysql 쿼리의 결과를 PHP의 다른 쿼리에서 어떻게 사용할 수 있습니까?

  13. 13

    어떻게 SQL에 두 개의 서로 다른 요인에 의해 정보의 순서를 필터링 할 수 있습니다?

  14. 14

    두 개의 다른 추상 클래스에서 특정 메소드를 어떻게 구현할 수 있습니까?

  15. 15

    Linux의 파일에서 패턴이 다른 두 줄을 어떻게 결합 할 수 있습니까?

  16. 16

    Oracle SQL 두 개의 다른 열에있는 열의 값을 어떻게 구분할 수 있습니까?

  17. 17

    다른 쿼리의 LIKE 조건에서 SQL 쿼리 결과를 어떻게 사용할 수 있습니까?

  18. 18

    조건이있는 두 개의 다른 배열을 어떻게 결합 할 수 있습니까?

  19. 19

    sailjs의 rest api 결과에 파일을 지정하는 방법을 어떻게 제한 할 수 있습니까?

  20. 20

    행의 SQL에서 두 값을 곱하고 결과를 같은 행의 다른 셀에 어떻게 넣을 수 있습니까?

  21. 21

    함수의 결과를 C의 다른 함수에 대한 매개 변수로 어떻게 사용할 수 있습니까?

  22. 22

    두 개의 다른 클래스로 패널에서 어떻게 칠할 수 있습니까?

  23. 23

    React jsx에서 "+"두 개의 다른 값을 어떻게 추가 할 수 있습니까?

  24. 24

    Ubuntu에서 1 개의 파일을 N 개의 다른 파일과 어떻게 비교할 수 있습니까?

  25. 25

    Bash에서 두 개의 awk 결과 값을 어떻게 비교할 수 있습니까?

  26. 26

    한 점이 다른 두 점으로 정의 된 선에 있는지 어떻게 확인할 수 있습니까?

  27. 27

    두 번째 SQL 문에서 SQL 문의 결과를 어떻게 사용할 수 있습니까? | PHP

  28. 28

    어떻게 하나의 jsonschema를 다른 jsonschema에 연결할 수 있습니까?

  29. 29

    지도를 할 때 ID가 모두있는 경우 어떻게 2 개의 다른 객체 배열에서 검색 할 수 있습니까?

뜨겁다태그

보관