Hier ist meine Firebase Datenstruktur:Firebase-Datenbank Zugriff auf mehrere Datensätze
{
"companies": {
"-Ke_b8p6OBaz1VCeovAH": {
"display_name": "First User's Company",
"users": {
"ir7jjLPA3fXCVsdc4OzzSiH9RJd2": "admin"
}
},
"-Ke_cmhDaIeGJjFwsDI1": {
"display_name": "First User's Second Company",
"users": {
"ir7jjLPA3fXCVsdc4OzzSiH9RJd2": "admin"
}
},
"-Ke_b9OgwY2IBdj5szmJ": {
"display_name": "Second User's Company",
"users": {
"5XcpmN7DgEWNnmWZucyQiOh4TJt2": "admin"
}
}
},
"users": {
"ir7jjLPA3fXCVsdc4OzzSiH9RJd2": {
"display_name": "First User"
},
"5XcpmN7DgEWNnmWZucyQiOh4TJt2": {
"display_name": "Second User"
}
}
}
Ich versuche, eine Abfrage auf diese Daten zu tun (via REST zum Beispiel.):
example.firebase.com/companies.json?orderBy="users/ir7jjLPA3fXCVsdc4OzzSiH9RJd2"
Meine Hoffnung ist, zurückzukehren
{
"-Ke_b8p6OBaz1VCeovAH": {
"display_name": "First User's Company",
"users": {
"ir7jjLPA3fXCVsdc4OzzSiH9RJd2": "admin"
}
},
"-Ke_cmhDaIeGJjFwsDI1": {
"display_name": "First User's Second Company",
"users": {
"ir7jjLPA3fXCVsdc4OzzSiH9RJd2": "admin"
}
}
}
Stattdessen bekomme ich
{
"error": "Index not defined, add \".indexOn\": \"users/ir7jjLPA3fXCVsdc4OzzSiH9RJd2\", for path \"/companies\", to the rules"
}
Hier ist meine Firebase Sicherheit Regeln
{
"rules": {
".read": true,
".write": true,
// Companies
"companies": {
".indexOn": ["display_name", "users"],
}
}
}
Es ist nicht möglich, Sicherheitsregeln für jeden Benutzer der Indizierung zu aktualisieren, so wie würde ich damit umgehen?
"Firebase unterstützt keine Filterung/Suche jeglicher Art." Diese Aussage scheint in diesem Zusammenhang irreführend zu sein. Nicht per se suchen, aber 'orderBy' +' equalTo' ist ein einfacher Filter und für @ Codys Problem anwendbar. Ich bin nicht gut in der REST-API, aber sortiere auf ein Kind eines Kindes, namens [tiefe Abfrage] (https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html), ist sicherlich in den SDKs möglich. –
Ich würde diesen ersten Satz in der Tat umformulieren, da es in der Firebase-Dokumentation einen vollständigen Abschnitt zum Bestellen und Filtern von Daten gibt: https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data. –
@TravisChristian - Ich habe diesen Artikel gelesen, genauso wie den von Frank geposteten. Ich bin jedoch nicht in der Lage gewesen, die Art und Weise, auf die ich oben Bezug nehme, abzufragen. Mit tiefen Abfrage sie verweisen, die Schlüssel sind immer die gleichen, d. H. 'Height',' weight' usw. Ich bin auf der Suche nach Abfragen auf Schlüssel, die sich ändern werden. Schlüssel, die Benutzer-UID sind. Das Speichern dieser IDs als Schlüssel in einem Wörterbuch ist auch die empfohlene Speicherpraxis in der Firebase-Datenbank. https://firebase.google.com/docs/database/web/structure-data#fanout –