如何使用 Firebase 实时数据库在 ReactNative 中加载 onScroll 数据

问题描述

我想从我的实时数据库加载数据,但每次只有 15 个条目,因为数据库很大。数据库一个词汇的名称,并获得有关它的信息,如翻译和统计信息。我想按值“wordENG”按字母顺序对其进行排序,但是有一个问题,当我像这样使用 orderByChild 时:

database()
    .ref(`vocables/${UID}`)
    .orderByChild("wordENG")
    .startAt(requestCount)
    .limitToFirst(15)
    .once("value")
    .then(snap => {
        console.log(snap.val());
    })

当我尝试使用 startAt 来获取滚动数据时,我遇到的问题是 startAt 需要是一个字符串,因此是数据库列表中的一个词。我不想每次都存储这个词并在那之后搜索新词,但目前我看不到另一种方式。有没有办法在滚动数字时按字母顺序获取数据以进行计数,还是我需要通过保存最后一个单词并从那里搜索来实现它?

解决方法

使用 Firebase 查询进行分页基于了解锚点而不是偏移量。因此,您确实需要知道要开始的节点的 wordENG 值(或使用相对较新的 startAfter 方法之后开始),以及可能的键(如果可能有多个具有相同的 wordENG 值。

如果您不熟悉 Firebase,我建议您还阅读之前的一些questions about pagination,因为这经常出现。