2016-06-10 25 views
0

Ich habe ein Kommentarmodell erstellt und versucht, alle Kommentarsätze abzurufen. Aber ich brauche eine Meta-Info insgesamt Kommentare, die als ein separates Attribut außerhalb Kommentare Array bekommen.Ember - Abrufen von Live-Datensätzen mit Metainformationen

Ich bin mit Ember store.query Aufzeichnungen holen aus der Ruhe Service (Ich versuchte store.findAll, aber es mir nur Rekord-Array von Kommentaren in Versprechen Antwort gibt. Ist es möglich, das zu ändern?) . Ich bekomme die Datensätze mit insgesamt Kommentare (Meta) bei der Verwendung von store.query(), aber das Datensatz-Array ist nicht aktualisiert, wenn wir neue Datensätze speichern.

Nach einigen Analysen habe ich festgestellt, dass wir Filter zum Laden des Live-Datensatzes verwenden können, aber der Filter ist jetzt in Ember (Ember 2.5.1) veraltet. Aus der Dokumentation Es ist klar, dass wir Ember-Data-Filter zum Laden von Live-Record verwenden können. Aber ich bin verwirrt, um dieses Addon zu verwenden (erwähnt, wie es einige Speicher Leckage Problem hat) und nicht sicher, ob ich Meta-Informationen von der Antwort erhalten werde. Gibt es eine andere Möglichkeit, Live-Datensätze mit Metainformationen aus der Antwort abzurufen?

jemand empfehlen, wählen Sie bitte eine Lösung

Antwort

0

Nach einigen Analysen, fand ich eine Lösung Meta-Daten zuzugreifen store.findAll() verwenden. Wir können typeMapFor in der findAll Antwort verwenden, um die Meta-Informationen in der Antwort

store.typeMapFor(response.type) 

Voll Code unten zu bekommen,

store.findAll("comment").then(function(response) { 
    var meta = store.typeMapFor(response.type); 

    // your meta info will be in meta.metadata 
    // var totalComments = meta.metadata.totalComments; 
}); 

Und der Antwortsatz Array ist liveRecords, die automatisch aktualisiert werden erhalten, wenn Wir speichern neue Datensätze.

store.query("comment").then(function(response) { 
    var meta = response.get("meta"); 
    // We will get meta like this but reponse record array is not a liveRecords 
}); 

Antwort von store.query bekommen() ist nur ein recordArray (nicht liveRecords), die mit neuen Rekorden nicht

0

Wenn Sie ein Array aller Datensätze möchten, die als neue Datensätze aktualisiert bevölkert sind, können Sie peekAll verwenden, die eine Live-Aufzeichnung Array zurückgibt.

Added Codebeispiel:

loadRecords: function(){ 
    this.set('allComments', store.peekAll('comment')); 
    this.store.findAll('comment'); 
}, 

recordCount: Ember.computed.alias('allComments.length') 
+0

aktualisiert werden erhalten, aber alle beliebigen Netzwerkanfrage machen nicht spähen. Es wird nur Daten aus dem Datenspeicher abrufen. Momentan verwende ich store.query, um Daten vom Rest-Service zu holen und den Datenspeicher zu füllen und danach peekAll, um den Live-Datensatz zu holen. Aber ich bin mir nicht sicher, ob dies der richtige Ansatz ist. –

+0

@ManuBenjamin dies greift nicht auf das Meta zu (was Ihre Frage war), aber es ist ein Beispiel für ein Live-Record-Array, das die aktuelle Anzahl von Kommentaren im Store zeigt, während Sie mehr von einem Server laden. – averydev

+0

Ich werde nicht alle Datensätze in einer einzigen Abfrage abrufen, aber ich werde die gesamten Datensätze, die in der db als Meta-Informationen in der Ruheantwort vorhanden sind. Was ich brauche, sind die gesamten Kommentare in db, nicht die Anzahl der Kommentare im Store. –

Verwandte Themen