【问题标题】:Firebase get comments from a startAt point javascriptFirebase 从开始点 javascript 获取评论
【发布时间】:2021-01-19 23:55:39
【问题描述】:

所以我试图从最后一条评论的加载键开始加载 cmets。

目前我正在加载前 2 个 cmets,如下所示:

firebase.database()
  .ref('/users/Hr9AFYHgOBZKkBqCjST789NrTJX2/updates/MRKbUNMJ85xRVokRorf/comments')
  .limitToFirst(2).once('value').then((snapshot) => {
    snapshot.forEach(function(child) {
      console.log(child.val().commentText);
    });
  });

效果很好。

但我想从最后一条评论的键开始加载接下来的 2 个 cmets。

在我的实际代码中,我找到了最后一个注释键,但现在让我们说:

var lastCommentKey = '-MRP79KPZRuaLHhBN8oZ';

现在我已经尝试了以下所有代码,但每个都没有给我任何数据:

firebase.database()
  .ref('/users/Hr9AFYHgOBZKkBqCjST789NrTJX2/updates/MRKbUNMJ85xRVokRorf/comments')
  .limitToFirst(2).startAt(lastCommentKey).once('value').then((snapshot) => {
    snapshot.forEach(function(child) {
      console.log(child.val().commentText);
    });
  });

也尝试使用时间戳:

var lastCommentTimestamp = '1611051098364';
    
firebase.database().ref()
  .child("/users/Hr9AFYHgOBZKkBqCjST789NrTJX2/updates/MRKbUNMJ85xRVokRorf/comments/")
  .orderByChild('commentTimestamp').limitToFirst(2).startAt(lastCommentTimestamp).once('value', function (snapshot) {
    ....
  });

有谁知道问题出在哪里?

这是我的数据库布局:

{
  "users" : {
    "Hr9AFYHgOBZKkBqCjST789NrTJX2" : {
      "updates" : {
        "-MRKbUNMJ85xRVokRorf" : {
          "comments" : {
            "-MRKbXy6YJ0jFlOMPHWF" : {
              "commentText" : "comment 1",
              "commentTimestamp" : 1610975438244,
              "commentUser" : "Hr9AFYHgOBZKkBqCjST789NrTJX2"
            },
            "-MRP79KPZRuaLHhBN8oZ" : {
              "commentText" : "comment 2",
              "commentTimestamp" : 1611051098364,
              "commentUser" : "Hr9AFYHgOBZKkBqCjST789NrTJX2"
            },
            "-MRP87mkILia7YqAfyUO" : {
              "commentText" : "comment 3",
              "commentTimestamp" : 1611051354198,
              "commentUser" : "Hr9AFYHgOBZKkBqCjST789NrTJX2"
            },
            "-MRP9E5sgkpzEa4Mzhrj" : {
              "commentText" : "comment 4",
              "commentTimestamp" : 1611051642205,
              "commentUser" : "Hr9AFYHgOBZKkBqCjST789NrTJX2"
            },
            "-MRP9Iprrcx1-A2Hq4iH" : {
              "commentText" : "comment 5",
              "commentTimestamp" : 1611051661597,
              "commentUser" : "Hr9AFYHgOBZKkBqCjST789NrTJX2"
            }
          },
          "updateText" : "This is a test update",
          "updateTimestamp" : 1610975423540
        }
      }
    }
  }
}

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    问题是您还没有订购任何东西。使用 limitstartAt/endAt总是为您的查询指定排序顺序。

    所以对于您的初始查询:

    firebase.database()
      .ref('/users/Hr9AFYHgOBZKkBqCjST789NrTJX2/updates/MRKbUNMJ85xRVokRorf/comments')
      .orderByKey().limitToFirst(2).once('value').then((snapshot) => {
        ...
    

    然后:

    firebase.database()
      .ref('/users/Hr9AFYHgOBZKkBqCjST789NrTJX2/updates/MRKbUNMJ85xRVokRorf/comments')
      .orderByKey().limitToFirst(2).startAt(lastCommentKey).once('value').then((snapshot) => {
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 2013-10-02
      • 2019-05-31
      • 2014-03-23
      • 2013-05-01
      • 2014-01-23
      相关资源
      最近更新 更多