Javascript - 如何一次从Firebase访问项目组?

时间:2016-06-21 16:57:29

标签: javascript firebase

当我的网页加载时,我想从Firebase数据库中加载20个项目。但是,当我向下滚动某个点(想想无限滚动)时,我想在Firebase中显示NEXT 20项。

通过文档查看,我并没有真正看到通过前20个对象然后接下来的20个对象的明显方法。

我在想这个加载三件物品,但它不会做下面三件事:

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

有什么想法吗?新的Firebase文档并不像旧文档那样简单

修改

所以我试图将我的startAtKey初始化为第一个链接"键"我的数据库的孩子。但是我的打印陈述完全没有了。我有什么遗漏Javascript从哪里返回的东西?

以下是代码:

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;
    });
}

1 个答案:

答案 0 :(得分:3)

您可以使用.startAt().endAt()方法进行范围查询。

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;   
}

您需要知道要启动的密钥,这取决于您如何设置应用程序代码。找到一种方法让您在需要加载更多内容之前弄清楚页面上的最后一项是什么,并在startAtKey处使用该项目的密钥。

See the docs here for more info.