gpt4 book ai didi

javascript - 如何使用 axios 分页从 firebase 获取批量数据?

转载 作者:行者123 更新时间:2023-11-30 11:16:29 25 4
gpt4 key购买 nike

假设我有 1000 多篇博文。使用 axios 从 firebase 获取数据并存储在 nuxtServerInit 中的最佳实践是什么?

我能否以某种方式在第一次加载时先获取前 10 篇博文,然后再获取更多数据?

现在我有如下的 vuex Action :

nuxtServerInit(vuexContext, context) {
return axios
.get('https://my-blog.firebaseio.com/posts.json')
.then(res => {
const postsArray = []
for (const key in res.data) {
postsArray.push({ ...res.data[key], uid: key })
}
vuexContext.commit('setPosts', postsArray)
})
.catch(e => context.error(e))
},

最佳答案

您正在使用 REST API to access the Firebase Database .要检索有限数量的项目,请使用 limit query .

https://my-blog.firebaseio.com/posts.json?limitToFirst=10

由于只有当您知道元素的顺序时限制才有意义,因此您还需要 order the items ,即在他们的 key 上:

https://my-blog.firebaseio.com/posts.json?orderBy="$key"&limitToFirst=10

请注意,结果可能未排序,因为 JSON 对象中的属性顺序未定义。因此,结果包含前 10 个帖子,但可能不会以正确的顺序显示它们。

下一步是获取接下来的 10 个项目。与大多数传统数据库不同,Firebase 在其查询中不支持偏移子句。所以你不能告诉它跳过前 10 项以进入下 10 项。

改为Firebase queries use anchors/ranges :您必须知道上一页的最后一项才能为下一页构建查询。假设第 10 篇文章的键值为 keyOfPost10,那么您可以通过以下方式获取下一页:

https://my-blog.firebaseio.com/posts.json?orderBy="$key"&startAt="keyOfPost10"&limitToFirst=11

我们需要在此处检索 11 个帖子,因为我们还要获取第 10 个帖子。这也意味着您需要过滤客户端代码中的重叠帖子。

关于javascript - 如何使用 axios 分页从 firebase 获取批量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51347517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com