首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何只获取Firebase RealTime数据库的一部分,而不是整个数据库?

如何只获取Firebase RealTime数据库的一部分,而不是整个数据库?
EN

Stack Overflow用户
提问于 2019-04-26 15:46:07
回答 2查看 267关注 0票数 0

我正在使用React.js创建一个页面,其中前3篇文章是从服务器加载的,并显示在html中。当用户滚动到页面底部时,我想再加载3个帖子。

我的目的是通过只加载所需的内容来节省带宽。这意味着我不应该下载整个数据库,然后只显示其中的一小部分。

我成功地完成了同样的练习,但我从本地json服务器获取数据。我使用axios来执行get请求。Axios提供了一个方便的'transformResponse‘参数,您可以在其中配置请求。在那里,在检索数据数组之前,我对它执行了一个切片,这正是我所需要的。

现在,我也想这样做,但是通过从Firebase加载数据。

到目前为止,我已经成功地从Firebase数据库检索了数据并显示了这些帖子。我是这样做的:

代码语言:javascript
运行
复制
database.on('value', snapshot => {
  this.setState({
    posts: snapshot.val()
  });
});

问题是这样我得到的是整个数据库。我不想这样。我只想得到三个帖子。

EN

回答 2

Stack Overflow用户

发布于 2019-04-26 15:47:48

Firebase只检索将侦听器附加到的位置下的数据。

因此,如果有一个名为posts的节点,则可以使用以下方法检索该节点:

代码语言:javascript
运行
复制
database.child('posts').on('value', snapshot => {
  this.setState({
    posts: snapshot.val()
  });
});
票数 0
EN

Stack Overflow用户

发布于 2019-04-26 16:05:51

我能知道你是如何构造数据库的吗?

如果您按Id标识这些帖子,如下所示

代码语言:javascript
运行
复制
root -- posts --- post 1
              --- post 2
               .
              --- post n

因此,您可以像这样循环浏览许多您想要的帖子

代码语言:javascript
运行
复制
firebase.database().ref('root/posts/' + postId).on('value', snapshot => {
  this.setState({
    posts: snapshot.val()
  });
});

您还可以只对一次调用API的posts进行分组,而不是循环:

代码语言:javascript
运行
复制
root -- posts --- postGroup1 --- post 1
                             --- post 2
                             --- post n
                     ...
              --- postGroupN --- post 1
                             --- post 2
                             --- post n

您可以在Firebase实时数据库文档上查看更多内容

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55870997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档