我正在使用React.js创建一个页面,其中前3篇文章是从服务器加载的,并显示在html中。当用户滚动到页面底部时,我想再加载3个帖子。
我的目的是通过只加载所需的内容来节省带宽。这意味着我不应该下载整个数据库,然后只显示其中的一小部分。
我成功地完成了同样的练习,但我从本地json服务器获取数据。我使用axios来执行get请求。Axios提供了一个方便的'transformResponse‘参数,您可以在其中配置请求。在那里,在检索数据数组之前,我对它执行了一个切片,这正是我所需要的。
现在,我也想这样做,但是通过从Firebase加载数据。
到目前为止,我已经成功地从Firebase数据库检索了数据并显示了这些帖子。我是这样做的:
database.on('value', snapshot => {
  this.setState({
    posts: snapshot.val()
  });
});问题是这样我得到的是整个数据库。我不想这样。我只想得到三个帖子。
发布于 2019-04-26 15:47:48
Firebase只检索将侦听器附加到的位置下的数据。
因此,如果有一个名为posts的节点,则可以使用以下方法检索该节点:
database.child('posts').on('value', snapshot => {
  this.setState({
    posts: snapshot.val()
  });
});发布于 2019-04-26 16:05:51
我能知道你是如何构造数据库的吗?
如果您按Id标识这些帖子,如下所示
root -- posts --- post 1
              --- post 2
               .
              --- post n因此,您可以像这样循环浏览许多您想要的帖子
firebase.database().ref('root/posts/' + postId).on('value', snapshot => {
  this.setState({
    posts: snapshot.val()
  });
});您还可以只对一次调用API的posts进行分组,而不是循环:
root -- posts --- postGroup1 --- post 1
                             --- post 2
                             --- post n
                     ...
              --- postGroupN --- post 1
                             --- post 2
                             --- post n您可以在Firebase实时数据库文档上查看更多内容
https://stackoverflow.com/questions/55870997
复制相似问题