Ich versuche zu lazy laden Firebase-Elemente, um später mehr von ihnen zu laden, wenn Benutzer Ende des Div-Container erreicht. Wenn ich .endAt()
und .startAt()
entferne, empfange ich die 15 Einzelteile, obwohl sie nicht inkrementiert werden und es bei diesen 15 Einzelteilen fest ist.Firebase Lazy Load
Wenn ich halten .endAt()
und .startAt()
Ich erhalte Feuerbasis Warnung Using an unspecified index. Consider adding ".indexOn": "title" at /items
obwohl .indexOn
gesetzt. Ich bin verwirrt von dieser Warnung. Vielen Dank im Voraus für jede Hilfe.
Firebase Struktur
{
"items" : {
"-Kk6aHXIyR15XiYh65Ht" : {
"author" : "joe",
"title" : "Product 1"
},
"-Kk6aMQlh6_E3CJt_Pnq" : {
"author" : "joe",
"title" : "Product 2"
}
},
"users" : {
"RG9JSm8cUndpjMfZiN6c657DMIt2" : {
"items" : {
"-Kk6aHZs5xyOWM2fHiPV" : "-Kk6aHXIyR15XiYh65Ht",
"-Kk6aMTJiLSF-RB3CZ-2" : "-Kk6aMQkw5bLQst81ft7"
},
"uid" : "RG9JSm8cUndpjMfZiN6c657DMIt2",
"username" : "joe"
}
}
}
Sicherheitsregeln
{
"rules": {
".read": true,
".write": "auth != null",
"users":{
"$uid": {
".write": "$uid === auth.uid"
"items":{
".indexOn": "title",
"$itemId": {
"title": {".validate": "...}
"type": {".validate": "...}
}
}
}
}
}
}
}
-Code-Struktur für faule Last
let _start = 0,
_end = 14,
_n = 15;
function lazyLoadItems(){
firebase.database().ref('items')
.orderByChild('title')
.startAt(_start)
.endAt(_end)
.limitToFirst(_n)
.on("child_added", snapshot=> console.log(snapshot.val()));
_start += _n;
_end += _n;
}
Sie fragen '/ items', während Sie einen Index zu'/users/$ uid/items' hinzugefügt haben. –
Hmm, yeah, obwohl ich alle Elemente von allen Benutzern auflisten möchte, wird die Abfrage von '/ users/$ uid/items' ohne' uid' nicht funktionieren. Und das Hinzufügen von '.indexOn ('items')' in '' rules '' macht keinen Sinn. Könnte es dann schlecht strukturierte Regeln sein? – nehel
Das ist unmöglich zu sagen, was Sie geteilt haben. Ein minimaler Ausschnitt des JSON könnte helfen. Sie können dies erreichen, indem Sie in Ihrer [Firebase-Datenbankkonsole] (https://console.firebase.google.com/project/_/database/data) auf den Link "JSON exportieren" klicken. –