Firebase从startAt point javascript获取注释
因此,我尝试从最后一条注释的loaded键开始加载注释 目前我正在加载前2条评论,如下所示: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) {
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岁。你有什么收获吗?我试图在下面给出一个答案。你看到了吗?这有意义吗?如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就会知道你已经得到了(足够的)帮助。也请参见