Firebase从startAt point javascript获取注释

Firebase从startAt point javascript获取注释,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,因此,我尝试从最后一条注释的loaded键开始加载注释 目前我正在加载前2条评论,如下所示: firebase.database() .ref('/users/Hr9AFYHgOBZKkBqCjST789NrTJX2/updates/MRKbUNMJ85xRVokRorf/comments') .limitToFirst(2).once('value').then((snapshot) => { snapshot.forEach(function(child) {

因此,我尝试从最后一条注释的loaded键开始加载注释

目前我正在加载前2条评论,如下所示:

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

但我想从最后一条注释的键开始加载接下来的2条注释

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

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
        }
      }
    }
  }
}

问题是你还没有订购任何东西。使用
limit
startAt
/
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) => {
    ...

嘿,布兰德,37岁。你有什么收获吗?我试图在下面给出一个答案。你看到了吗?这有意义吗?如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就会知道你已经得到了(足够的)帮助。也请参见