英文:
Firebase Realtime Database Query in JavaScript
问题
我想在存储在Firebase实时数据库中的数据上实现分页。阅读了一些文档后,我了解到可以使用以下查询函数。
const q = query(
citiesRef,
orderBy("population"),
startAt(10000),
limitToFirst(10)
);
在这里,我们可以根据 orderBy 键定义 startAt。但是,我没有任何用于 orderBy 的字段,而是想根据键来进行分页。请看下面的数据库结构 -
- Chapter1
- Sloka1
- Sloka
- Translation
- Sloka2
- Sloka
- Translation
- Sloka3
- Sloka
- Translation
- Sloka4
- Sloka
- Translation
- Sloka1
所以基本上,如果您看到我的键是Sloka1、Sloka2等等。那么在这种情况下,我应该如何使用 startAt() 呢?
我尝试过只使用 startAt(),但它给我报错。
我期望它应该返回像 startAt(2) 和 limitToFirst(2) 这样的结果,那么它应该返回 Sloka2 和 Sloka3。
英文:
I want to implement pagination on data stored in firebase realtime database. Reading some documentation I got to know that we can use query function given below.
const q = query(
citiesRef,
orderBy("population"),
startAt(10000),
limitToFirst(10)
);
where we can define startAt based on orderBy key. But I don't have any field for orderBy instead I want to do pagiantion based on the key.
See the below database structure -
- Chapter1
- Sloka1
- Sloka
- Translation
- Sloka2
- Sloka
- Translation
- Sloka3
- Sloka
- Translation
- Sloka4
- Sloka
- Translation
- Sloka1
So basically if you see my key is Sloka1, Sloka2 etc.. So how can I use startAt() in this condition.
I have tried using startAt() only, but it's giving me error.
I am expecting it should return like if startAt(2) and limitToFirst(2) then it should return Sloka2 and Sloka3.
答案1
得分: 1
你正在寻找的是 orderByKey()
,这在数据排序文档中有介绍。一旦按照键排序了数据,然后你可以将一个键传递给 startAt
。
所以在你提供的示例数据结构中,代码如下:
const q = query(
citiesRef,
orderByKey(),
startAt("Sloka2"),
limitToFirst(2)
);
这个查询将会给你返回 Sloka2
和 Sloka3
作为结果。
英文:
What you're looking for is orderByKey()
, which is covered in the documentation on ordering data. Once you've ordered the data by its keys, you can then pass a key to startAt
.
So in the example data structure you gave, that'd be:
const q = query(
citiesRef,
orderByKey(),
startAt("Sloka2"),
limitToFirst(2)
);
This query will give you Sloka2
and Sloka3
as the results.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论