2016-06-21 1 views
0

Wenn meine Seite geladen wird, möchte ich 20 Elemente aus meiner Firebase-Datenbank laden. Wenn ich jedoch einen bestimmten Punkt nach unten scrolle (denke endlos scrollen), möchte ich die NEXT 20 Elemente in Firebase anzeigen.Javascript - Wie greife ich auf Gruppen von Elementen gleichzeitig von Firebase zu?

Wenn ich durch die Dokumentation schaue, sehe ich keinen offensichtlichen Weg, die ersten 20 Objekte und dann die nächsten 20 Objekte zu durchsuchen.

Ich war dieses Denkens drei Elemente zu laden, aber es wird die nächsten drei Punkte nicht tun:

ref.limitToLast(numItemsPerLoad).on("child_added", function(snapshot, prevChildKey) { 
    writeToPage(snapshot, ul); 
}); 

Irgendwelche Ideen? Die neue Firebase Dokumentation ist nicht so einfach, wie die alte

EDIT

So versuche ich meine startAtKey auf das erste Glied der „Schlüssel“ Kind meiner Datenbank zu initialisieren. Aber meine Druckaussagen sind alle aus dem Ruder. Gibt es etwas, das mir fehlt, wo Javascript zurückkommt oder so?

Hier ist der Code:

var ref; 
var startAtKey; 
function extractImage(){ 
    var database = firebase.database(); 

    var featuredRef = database.ref("Featured/"); 
    var projectsRef = database.ref("Projects/"); 
    var featured_ul = document.getElementById("featured_links"); 
    var normal_ul = document.getElementById("normal_links"); 

    //Read featured section first 
    readSection(featuredRef, featured_ul); 

    startAtKey = initializeStartAtKey(projectsRef); 
    console.log("startAtKey is " + startAtKey); //This doesn't print '1' like it should 

    //Randomly read the rest of the sections 
    readSection(projectsRef, normal_ul); 
} 

function initializeStartAtKey(ref){ 
    console.log("INSIDE INTIALIZE"); 
    ref.orderByChild("key").limitToFirst(1).once("child_added", function(snapshot){ 
     console.log("key is " + snapshot.val().key); 
     return snapshot.val().key; 
    }); 
} 

Antwort

3

Sie können mit den .startAt() und .endAt() Methoden Bereichsabfragen tun.

var ref = firebase.database().ref().child('items'); 

function getNextItems(ref, startAtKey, numberOfItems) { 
    var query = ref.startAt(startAtKey).limitToFirst(numberOfItems); 
    return query; 
} 

function getPreviousItems(ref, endAtKey, numberOfItems) { 
    var query = ref.endAt(endAtKey).limitToFirst(numberOfItems); 
    return query; 
} 

Der Haken ist, dass Sie den Schlüssel wissen, müssen bei starten, und dies ist davon abhängig, wie Sie Ihren Anwendungscode sind einrichten. Finden Sie einen Weg, wie Sie herausfinden können, was das letzte Element auf der Seite ist, bevor Sie mehr laden müssen, und verwenden Sie den Schlüssel des Elements unter der Nummer startAtKey.

See the docs here for more info.

+0

ich versuche, einen Weg, um herauszufinden, den Überblick über die startAtKey zu halten, aber ich kann nicht einmal einfach initialisieren es auf den ersten Wert des ersten Elements (siehe edit) – Homerdough

Verwandte Themen