Ich versuche, meine Netzwerkaufrufe zwischen meiner Emmi App und meinem Rails API-Backend effizienter zu gestalten, wenn Objekte eines Ember-Datenobjekts abgerufen werden. Sagen wir, ich habe zwei Modelle:Ember.js - Ändern des Formats einer Netzwerkanforderung, die beim Abrufen der zugehörigen Objekte eines Modells gesendet wird
shop
- einshop
vieleproducts
product
hat -
Ich verwende einen RESTAdapter
für beide Modelle ein product
gehört zu einer shop
, so dass, wenn Ich versuche, die Produkte eines Ladens wie folgt zu bekommen:
let shop = this.store.find("shop", 1);
let products = shop.get("products");
Nehmen wir an, ich shop
mit einem hasMany
Beziehung zu den ersten 500 product
s in meiner Datenbank. Die Netzwerkanforderungen werden wie folgt aussehen (nehmen alle URL-Pfade gültig sind und führen zu gültigen Controller und Aktionen):
localhost:3000/api/v1/shops/1
localhost:3000/api/v1/products/1
localhost:3000/api/v1/products/2
localhost:3000/api/v1/products/3
localhost:3000/api/v1/products/4
localhost:3000/api/v1/products/5
...
Mein products
api Endpunkt kann in einem filter
Parameter nehmen in einen ApplicationRecord.where
Aufruf zu füttern. Also, was ich wirklich gerne tun würde, ist in der Lage, das Ergebnis der shop.get("products")
Anruf so zu ändern, dass es einen einzigen Anruf an meine products
Endpoint mit einem Filter-Parameter und erhält alle verwandten Produkte in loser Schüttung statt 500 einzelnen Anrufe an die api-Endpunkt
Gibt es ein etabliertes Muster, dies zu tun?
könnte dies helfen: https://discuss.emberjs.com/ t/Koaleszenz-find-Anfragen/7076 – Jeff
so basicly in Ihrem Adapter fügen Sie diese Zeile: 'coalesceFindRequests: true,' – Jeff