2017-11-19 4 views
2

ich die folgende Struktur haben:Feuerbasis Echtzeit-Datenbank-Abfrage

{ 
    "Campaign" : { 
    "-KtghP_NMOFrjN_RrI6f" : { 
     "Projects" : { 
     "-Kz5g4j8dKgxtqQsPfN1" : { 
      "createByName" : "Michal", 
      "profileId" : "-KtlDwI3Bq4Bi7R23kya" 
     }, 
     "-KzGCaLblTxzu4Nje15Z" : { 
      "createByName" : "Roy", 
      "profileId" : "-Kxx_egu9h4GOrxqM1nB" 
     } 
     } 
    }, 
    "-KyjE0HPNSg27Kpurq8l" : { 
     "Projects" : { 
     "-KzBUZBsI947HckV296O" : { 
      "createByName" : "Roy", 
      "profileId" : "-Kxx_egu9h4GOrxqM1nB" 
     } 
     } 
    } 
    }, 
    "UserProfile" : { 
    "-Kxx_egu9h4GOrxqM1nB" : { 
     "MyProjects" : { 
     "-KzGC3Yn4bAAorcwDhUT" : { 
      "CampaignId" : "-KyjE0HPNSg27Kpurq8l", 
      "projectId" : "-KzBUZBsI947HckV296O" 
     }, 
     "-KzGCaeTqMm_g1Jq6u6i" : { 
      "CampaignId" : "-KtghP_NMOFrjN_RrI6f", 
      "projectId" : "-KzGCaLblTxzu4Nje15Z" 
     } 
     }, 
     "firstName" : "roy" 
    } 
    } 
} 

i das Profil-ID haben.

Ich brauche die verschiedene Projekte des Benutzers zu erhalten, unter den verschiedenen Kampagnen ..

ich die Liste des MyProjects durch den Benutzer-ID erhalten möge, und dann durchlaufen (mit den Tasten i von MyProjects bekam) über die Kampagnen - (key) -> projects - (key) -> profileId und vergleiche sie ... (hoffe es war klar genug ...)

WIE TUN ICH DAS?

Ok, nach etwas mehr Forschung ging ich einen anderen Weg. es scheint, als ob ich nicht "MyProjects" brauche.

var userId = "-Kxx_egu9h4GOrxqM1nB"; 
var campaignRef = this.db.app.database().ref('Campaign'); //root 
var projectsRef = campaignRef.child('Projects'); 

projectsRef.orderByChild('profileId').equalTo(userId).once("value", (snap) => { 
    console.log(snap.val()); 
}); 

aber immer noch i NULL erhalten .. (versucht "child_added" und .on in verschiedenen Kombinationen - nichts ...)

+2

Bitte zeigen Sie uns, was Sie versucht haben, damit wir Ihnen helfen können – Melchia

+0

Vielen Dank für Ihren Kommentar. hat meinen Code hinzugefügt .. – Lerman

Antwort

0

Nach der Anmeldung und Ziehen des Campaign Objekt, können Sie versuchen, laufen den folgenden Code:

// user is an object from the userProfile. You can also just directly access the object and get what you need. Really, it's up to you. I'll assume that you also stored the user ID (uid) here too. 
 
var user = {}, 
 
    campaigns = {}, 
 
    uid = {}, 
 
    myProjects = []; 
 

 
function getProjects() { 
 
    for (var i in campaigns) { 
 
    for (var k in campaigns[i]) { 
 
     // Make sure that the profileId of the project and the uid match, then push object into myProjects array 
 
     campaigns[i][k].profileId === uid ? myProjects.push(campaigns[i][k]) : 'nada'; 
 
    } 
 
    } 
 
}

im myProjects Array Du findest deine Projekte.