2016-12-26 3 views
0

Ich versuche, etwas zu tun, die in der Theorie sollte einfach sein. Ich habe die folgende Datenstruktur in Firebase:Join Abfragen mit Polymer und Firebase

- projects 
-- 1 
--- name: some project 
--- organisation: awesome organisation 
--- users 
---- uid1: true 
---- uid2: true 

- users 
-- uid1 
--- name: Bob 
--- email: [email protected] 
--- tel: 020 3456 3456 
-- uid2 
--- name: tom 
--- email: [email protected] 
--- tel: 020 3456 3456 

ich ein Projekt-ID haben, die von einem übergeordneten Element übergeben wird, und ich möchte für dieses Projekt alle Benutzer angezeigt werden soll.

<dom-module id="project-users"> 
    <template> 

    <firebase-query 
     id="query" 
     path="/projects/{{project.id}}/users" 
     data="{{users}}"> 
    </firebase-query> 

    <template is="dom-repeat" items="{{users}}" as="u"> 
     user key: [[u.$key]] 
     <!-- now do something to retrieve the full user record and display it --> 
    </template> 

    </template> 
</dom-module> 

Wie würde ich den vollen Benutzerdatensatz für jeden Benutzer erhalten dann, würde ich einen Tag in der dom-repeat haben müssen? Aber wie würde das dann asynchron funktionieren?

Oder ist das nicht der richtige Weg?

Vielen Dank für Ihre Hilfe.

+0

Iterate über den Knoten in der project_id/Benutzer befindet sich der uid und jedes in gelesen haben? Sie müssen nicht einmal nach jedem einzelnen abfragen, da Sie den spezifischen Pfad zu jedem Benutzer im Knoten/users kennen. – Jay

+0

Danke für die Antwort! Das Problem ist, dass ich unter projects/[project_id]/users nur die Liste der Benutzerschlüssel erhalte, also die vollständigen Benutzerdatensätze. Also, sobald ich den Schlüssel habe, muss ich immer noch den kompletten Rekord bekommen. – Hubert

+0

Iteriere über jeden Schlüssel und lese diesen Datenknoten ein. dh lese/users/uid1 und lese dann users/uid2 usw. – Jay

Antwort

2

Ich werde meine Lösung hier umbuchen, da ich nicht herausfinden konnte, wie Code zu formatieren in den Kommentaren :-)

Schließlich landete ich jeden Benutzerdatensatz in seine eigene Komponente das Aufstellen, wie folgt aus:

<dom-module id="project-users"> 
    <template> 

    <firebase-query 
     id="query" 
     path="/projects/{{project.id}}/users" 
     data="{{users}}"> 
    </firebase-query> 

    <template is="dom-repeat" items="{{users}}" as="u"> 
     <user-details uid=[[u.$key]]></user-details> 
    </template> 

    </template> 
</dom-module> 

und dann in benutzer details.html:

<dom-module id="user-details"> 
    <template> 

    <firebase-document 
     path="https://stackoverflow.com/users/[[uid]]" 
     data="{{u}}"> 
    </firebase-document> 

    [[u.name]]<br /> 
    [[u.email]]<br /> 
    [[u.tel]]<br /> 

    </template> 
</dom-module> 
+1

Dies ist eine elegante Lösung! – gthmb

+0

Ich frage mich, ob dies irgendwelche Nachteile hinsichtlich der Leistung im Vergleich zu den Firebase Joins in plain JavaScript hat? – Niklas