2016-10-27 2 views
0

API, который я использую, требует нестандартного предложения where, если я пытаюсь выполнить поиск определенного не-id-поля. Конечный мне нужно:Как связаться с нестандартным API, используя Angular ngResource

http://127.0.0.1:4001/api/testusers/findOne?userName=Anton

Так что это будет найти меня первую запись в таблице testusers которой колонка (Username) = «Антон».

Мой стандартный сервис:

angular. 
 
    module('shared.testUser'). 
 
    factory('TestUser', ['$resource', 
 
    function($resource) { 
 
     return $resource('http://127.0.0.1:4001/api/testusers/:id', {id:'@id'},//parameters 
 
      { 
 
       update: { 
 
         method: 'PUT' // To send the HTTP Put request when calling this custom update method. 
 
       } 
 
        
 
      }); 
 
    } 
 
    ]);

и моя функция призвание:

self.checkUsersEntryDirection = function(){ //NOT WORKING 
 
     self.testuser = TestUser.get({ username: 'anton' }, function() { 
 
     console.log(angular.toJson(self.testuser)); 
 
     }); // get() returns a single entry 
 
    }

Очевидно, что это не работает и я не могу использовать стандартный подход get. Может ли кто-нибудь подумать, как это можно достичь?

ответ

0

Вы можете создать вторичный завод TestUserByName и внести следующие изменения:

angular. 
    module('shared.testUser'). 
    factory('TestUserByName', ['$resource', 
    function($resource) { 
     return $resource('http://127.0.0.1:4001/api/testusers/findOne?userName:username', null, 
      { 
       update: { 
         method: 'PUT' // To send the HTTP Put request when calling this custom update method. 
       } 

      }); 
    } 
    ]); 
0

вызова метода get действия с двумя параметрами:

var params = {id: "findOne", username: "anton"}; 

self.checkUsersEntryDirection = function(){ 
    self.testuser = TestUser.get(params, function() { 
    console.log(angular.toJson(self.testuser)); 
    }); // get() returns a single entry 
} 

Параметр id будет переопределить значение по умолчанию и username параметр будет добавлен как строка запроса.

От DOCS:

Каждое ключевое значение в объекте параметра сначала связан с шаблоном URL-адрес, если присутствует, а затем любые лишние ключи добавляются к URL поиска запроса после?.

С учетом шаблона /path/:verb и параметров {verb:'greet', salutation:'Hello'} результатов в URL /path/greet?salutation=Hello.

- AngularJS ngResource $resource Service API Reference