2017-01-18 7 views
2
this.store.findAll('game').then(function(results){ 
    // RUN SOME OPERATION ON THEM 
}) 

Ich mag würde wissen, wie ich mit dem Ergebnisse variabel spielen kann. Ich verstehe, dass ich tun kannIterate über eine ember Modellabfrage

results.get('firstObject') // returns the first object. 

Ich möchte alles andere wissen, was ich damit tun kann. Gibt es eine API-Dokumentation für die Ergebnisse Sammlung?

Danke!

Antwort

6

Von ember guides,

Die folgenden Methoden, die Versprechen zurückkehren, wird es für die Aufzeichnung oder RecordArray gelöst werden.

store.findAll() gibt eine DS.PromiseArray zurück, die zu einem DS.RecordArray erfüllt.
store.findRecord gibt ein Versprechen, das mit dem record gelöst wird.
store.query() gibt eine DS.PromiseArray in der gleichen Weise wie findAll zurück.

Die folgenden zwei sind Synchronus-Methode, es wird abrufen, was im Laden verfügbar ist und Datensatz selbst zurückgibt. Der Server wird nicht aufgefordert, Daten abzurufen.

store.peekAll gibt direkt eine DS.RecordArray zurück.
store.peekRecord direclty Datensatz zurückgibt

Es ist wichtig zu beachten, dass DS.RecordArray kein Array JavaScript ist, es ist ein Objekt, das Ember.Enumerable implementiert. Dies ist wichtig, weil zum Beispiel, wenn Sie Datensätze nach Index abrufen möchten, die [] -Notation nicht funktioniert - Sie müssen stattdessen objectAt(index) verwenden.

Von Ember.Enumerable, die meiste Zeit ich folgendes verwenden geschah,
forEach
map iterieren neue Array
filterByfindBy zur Filterung basiert auf einzelne Eigenschaft Check
toArray Umwandlung normal zu transformieren natives Array

+0

Vielen Dank! Du hast mir genau gesagt, was ich herausfinden wollte. –

+0

Gilt das alles für store.query()? Die Ember Guides sagen nur, dass sie ein "Versprechen" zurückgeben, wobei mir nicht klar ist, was das bedeutet. – Cameron

+1

Ja ist es auch für 'store.query'. Ich aktualisierte mit mehr Info. in der Anleitung erwähnten sie so: 'Diese Methode gibt ein DS.PromiseArray auf die gleiche Weise wie findAll.' zurück – kumkanillam

0

Sie haben überhaupt nicht gegoogelt?

findAll gibt eine Promise zurück, die in ein RecordArray aufgelöst wird. Das RecordArray ist ein ArrayProxy.

http://emberjs.com/api/classes/Ember.ArrayProxy.html

Alles, was Sie brauchen.

Wenn Sie "ember findall" googlen, finden Sie auch Dokumente für "Ember.js - Models: Finding Records - Guides".

https://guides.emberjs.com/v2.5.0/models/finding-records/

+0

Sie haben Recht.Es war genau dort in der Dokumentation. Ich habe Google, ich glaube, ich habe es nicht richtig gemacht. –