我有以下查詢,以獲得最新的16篇自上次獲取:火力地堡JS:startAt,orderByChild和limitToLast
db.ref("articles).startAt(null, "last_fetched_key").orderByChild("published").limitToLast(16);
所以應該在上一篇文章中我已經開始,然後命令那些由子鍵「發佈」,然後限制這些結果爲16.
只要我不做orderByChild(「發佈」),但如果我這樣做,我總是得到16項?
注:我看到在兩個的NodeJS(火力管理員5.1.0)和瀏覽器(火力-SDK 4.2.0)
實施例這種行爲:(見下文的數據例)
function countObj(obj) { var c=0; for (var k in obj) { c++; } return c; }
function getLastKey(obj) { var lk=null; for (var k in obj) { lk = k; } return lk; }
firebase.database().ref("articles/-KnLhC7S0wtNV17R-w2I")
.orderByChild("published")
.limitToLast(4) // limit 4,
.once("value", function(snap) {
var data = snap.val();
console.log("#1 Results: "+ countObj(data.val())); // Results: 4
var lastKey = getLastKey(data);
// With .orderByChild("published")
// Should return 1 result because articles contains 4, we pass the 4th key to startAt()
firebase.database().ref("articles/-KnLhC7S0wtNV17R-w2I")
.startAt(null, lastKey) // use startAt
.orderByChild("published")
.limitToLast(4)
.once("value", function(snap) {
var data = snap.val();
console.log("#2 Results: "+ countObj(data.val())); // Results: 4
});
// Without .orderByChild("published")
// Returns 1 result because articles contains 4, we pass the 4th key to startAt()
firebase.database().ref("articles/-KnLhC7S0wtNV17R-w2I")
.startAt(null, lastKey) // use startAt
.limitToLast(4)
.once("value", function(snap) {
var data = snap.val();
console.log("#3 Results: "+ countObj(data.val())); // Results: 1
});
});
數據:
{
"articles" : {
"-KnLhC7S0wtNV17R-w2I" : {
"1498230632000-3M7VnZESptDyGP4iN6BXlNqi6ukG4HgWkX4KvwiWEKs%3D_15cd582aa38%3A50c8a%3A35f03cd7" : {
"published" : 1498230632000
},
"1498230632001-3M7VnZESptDyGP4iN6BXlNqi6ukG4HgWkX4KvwiWEKs%3D_15cd582aa38%3A50c8a%3A35f03cd7" : {
"published": 1000
},
"1498230632002-3M7VnZESptDyGP4iN6BXlNqi6ukG4HgWkX4KvwiWEKs%3D_15cd582aa38%3A50c8a%3A35f03cd7" : {
"published": 900
},
"1498230632003-3M7VnZESptDyGP4iN6BXlNqi6ukG4HgWkX4KvwiWEKs%3D_15cd582aa38%3A50c8a%3A35f03cd7" : {
"published": 1100
},
}
}
}
請共享重現問題所需的最低JSON(a沒有截圖)。您可以通過點擊[Firebase數據庫控制檯](https://console.firebase.google。)中的「導出JSON」鏈接來獲取此信息。COM /項目/ _ /數據庫/數據)。 –
完成! (我希望我的示例代碼是足夠清晰的..在這裏輸入它所以沒有檢查.. :)) – REJH