2016-10-27 3 views
0

Die von mir verwendete API erfordert eine nicht standardmäßige Where-Klausel, wenn ich nach einem bestimmten Nicht-ID-Feld suchen möchte. Der Endpunkt ich brauche, ist:So erreichen Sie eine nicht standardmäßige API mit Angular ngResource

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

So wird dies mir den ersten Datensatz in der Tabelle testusers finden, deren Spalte (username) = 'Anton'.

Mein Standard-Service ist:

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. 
 
       } 
 
        
 
      }); 
 
    } 
 
    ]);

und meine Berufung Funktion ist:

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

Offensichtlich dies nicht funktioniert und ich kann den Standard-Get-Ansatz nicht verwenden. Kann jemand darüber nachdenken, wie dies erreicht werden kann?

Antwort

0

Sie könnten eine sekundäre Fabrik TestUserByName erstellen und folgende Änderungen vornehmen:

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

Rufen Sie die get Aktion-Methode mit zwei Parametern:

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 
} 

Der id Parameter die Standardeinstellung überschreiben wird und username Parameter wird als Abfragezeichenfolge hinzugefügt.

Vom DOKU:

Jeder Schlüsselwert in dem Parameter-Objekt wird zunächst auf URL-Vorlage gebunden, falls vorhanden, und dann alle anderen Schlüssel werden an die URL Suchabfrage nach dem beigefügten?.

Gegeben eine Vorlage /path/:verb und Parameter {verb:'greet', salutation:'Hello'} ergibt URL /path/greet?salutation=Hello.

- AngularJS ngResource $resource Service API Reference

Verwandte Themen