2017-02-16 2 views
0

Wie der Titel andeutet, versuche ich das Firebase-Abfrage-Element zu verwenden, um eine Abfrage nach einem Array von Schlüsseln durchzuführen, die im Gegenzug eine Menge Objekte pro Schlüssel aus der Abfrage erhalten sollen. Dies kann leicht in Java oder schnell gemacht werden, aber wenn es um Polymerelemente geht, kann ich es nicht herausfinden.Wie kann ich ein Array von Schlüsseln durchlaufen und Abfrage für jede Verwendung von Firebase-Abfrage in einer deklarativen Weise durchführen?

Ich habe versucht, Firebase-Abfrage in einer Dom-Wiederholung, aber scheint nicht zu arbeiten. Ich habe auch versucht, den Equal-to-Schlüssel zu ändern, der die Abfrage für den neuen Schlüssel nicht zu starten scheint.

siehe unten Code:

<!doctype html> 
<html> 
<head> 
</head> 
<body> 
    <template is="dom-bind" id="scope"> 

     <!-- .......other code --> 
     <!-- condKey is from the array I need to loop --> 
     <!--through and array comes from another query--> 

     <firebase-query 
     id="myQuery" 
     app-name="ProjectName" 
     order-by-child="childName" 
     path = "/nodeKey" 
     equal-to=[[condKey]] 
     data="{{results}}"> 
     </firebase-query> 

    <!-- ***data comes from another query --> 

    <div id="listContainer">  
     <template is="dom-repeat" items=[[data]] as="item">  
     <div class="item"> 
     <div class$="{{_computeItems(item.key)}}"></div> 
      <template is="dom-repeat" items={{results}} as="myresult"> 
      <div>[[myresult.key]]</div> 
      </template> 
     </div>  
     </template> 
    </div> 


    <script> 
    scope._computeItems = function(key) { 
      console.log("key of query is: " , key); 
      scope.condKey = key ;     
     }; 
    </script> 
    </template> 

    <!-- .......other code --> 
    </body> 

Antwort

0

So war ich versuche, dies unter Verwendung von Polymer-Daten zu erreichen Bindung und Kindern durch Verschachtelung, die jeder tun, es ist eigene Abfrage zu bekommen, was er braucht, und ich war ein Rookie damals. Hier ist, wie es einfach über Polymer-Datenbindung und in einer deklarativen Weise zu tun.

<parent-element> 
    <template is="dom-repeat" items="[[keyArrays]]"> 
     <child-element key="[[item]]"></child-elements> 
    </template> 
</parent-element> 

und dann in jedem Kind-Element tun Sie eine Abfrage über Firebase-Abfrage in Kind-Element Definition:

<dom-module id="child-element"> 

    <template> 
    .... 

    <firebase-query path="/path/[[key]]" data="{{_queryResult}}></firebase-query> 

    <element-to-bind-result-with data="[[_queryResult]]"></element-to-bind-result-with> 

    </template> 
     .... 
<dom-module> 

Hoffe, dass es jemand hilft.

0

Sie gehen js Promise.all zu erreichen, dass zu verwenden. Sie drücken jede XHR/.once() in ein Array und führen dann Promise.all dagegen aus.

+0

Hey Ron, danke für deine Antwort. Ich würde es schätzen, wenn es irgendeinen Weg gibt, auf dem du etwas mehr erweitern kannst, sogar ein Schnipsel oder etwas würde helfen. Danke nochmal – TheeBen

+0

Ich denke das könnte der Link sein http://stackoverflow.com/questions/35879695/promise-all-with-firebase-datasnapshot-foreach –

0

Übergeben Sie den Wert an eine new-element, mit einer Vorlage is = "dom-repeat" wird Ihr Problem lösen.

<div id="listContainer">  
     <template is="dom-repeat" items=[[data]] as="item">  
     <div class="item"> 
     <div class$="{{_computeItems(item.key)}}"></div> 

      <template is="dom-repeat" items={{results}}> 
      <new-element results="{{results}}"></new-elements> 
      </template> 

     </div>  
     </template> 
    </div> 

Neues Element

 <template is="dom-repeat" items={{results}} as="myresult"> 
     <div>[[myresult.key]]</div> 
     </template> 
+0

hmm, bin mir nicht sicher, ob das meine Probleme löst, da gibt es noch eine Schleife in dem neuen Element, das ich für jedes Element Abfrage ausführen müsste, und das ist im Wesentlichen, was ich herausfinden möchte, wie kann ich Abfrage mit Firebase-Abfrage für jedes Element einer Dom-Wiederholung ausführen? Es scheint nicht so weit zu gehen .. – TheeBen

Verwandte Themen