我有以下查询,以获得最新的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