2016-06-01 12 views
0

Ich und mein Kollege bauen eine Anwendung, die zwei verschiedene api-Endpunkte hat, mit denen sie spricht. Leider muss es manchmal mehrere Anfragen an beide Endpunkte stellen und die Antwort zusammen in eine große Datenstruktur mischen.Erstellen Sie eine neue Methode im Geschäft?

Bis jetzt haben wir es durch Überschreiben der Abfrage-Methode im ApplicationAdapter getan, aber es ist ein Problem mit diesem Problem aufgetreten, da wir manchmal nur eine einzige Anforderung benötigen.

Wir wollen jetzt in der Lage sein, ein neues Verfahren zum Speicher hinzuzufügen, so statt:

this.get('store').query(somemodel, params); 

Wir wollen tun können:

this.get('store').multipleQuery(somemodel, params); 

Im Adapter, ein Erstellen Die neue Methode ist einfach, da wir sie einfach hinzufügen können. Aber wie erstellen wir eine neue Methode im Store und wie können wir sicherstellen, dass der Adapter unsere erweiterte Klasse verwendet?

Antwort

2

Nun, ist der Laden nur ein Service, so dass Sie und erweitern außer Kraft setzen können:

services/store.js

import DS from 'ember-data'; 

export default DS.Store.extend({ 
    multipleQuery() {...} 
}); 

Aber Sie müssen verstehen, wobei der Adapter verwendet nicht die speichern, verwendet das Geschäft die Adapter.

Auch beginnen zu wissen, dass Sie private APIs verwenden müssen. Ich würde read the code erfahren, wie der Speicher funktioniert.

Aber ich denke, Sie sollten nur den Adapter verwenden. Warum nicht einfach store.query('model', {multiple:true}) oder so etwas tun?

+0

Danke für die Antwort, das ist ziemlich genau das, was wir realisiert haben. Wir hatten einige Probleme mit der privaten API und da sie sich mit der Zeit ändern sollten, verwenden wir nur den Adapter und bieten stattdessen eine zusätzliche Option an. – Ms01