相关疑难解决方法(0)

Firebase orderByChild与startAt()的第二个参数w/pagination没有排序

我有一个Firebase调用,看起来像这样,

      ref.child(`floorPosts/${this.props.floorName}`)
        .orderByChild('numberOfLikes')
        .limitToLast(15)
        .once('value', (snapshot) => {
          var topPosts = [];
          snapshot.forEach((childSnapshot) => {
            var post = childSnapshot.val();
            post.key = childSnapshot.key();
            topPosts.unshift(post);
          });
          this.lastPostKeyTop = topPosts[topPosts.length - 1].key;
          this.setState({
            topPosts,
            isLoading: false
          });
      });
Run Code Online (Sandbox Code Playgroud)

现在我要做的是,当用户滚动到页面底部时,我调用了这个函数.

ref.child(`floorPosts/${this.props.floorName}`)
    .orderByChild('numberOfLikes')
    .startAt(null, this.lastPostKeyTop)
    .limitToLast(15)
    .once('value', (snapshot) => {
      var topPosts = [];
      snapshot.forEach((childSnapshot) => {
        var post = childSnapshot.val();
        post.key = childSnapshot.key();
        topPosts.unshift(post);
      });
      this.setState({
        topPosts: this.state.topPosts.concat(topPosts),
        isLoading: false,
      });
  });
Run Code Online (Sandbox Code Playgroud)

然而,它与最初的结果相同,前15个结果相同. .startAt接受第二个参数,(我相信)是从firebase获取的最后一个项目的关键字.但是,这似乎并不适用于我的情况.我有预感它与snapshot.forEach代码有关.

firebase firebase-realtime-database

3
推荐指数
1
解决办法
981
查看次数