我们如何在Firebase中分页?
在从Google Firebase列出或获取数据列表时,我们如何对收集的数据进行分页? 例如,我们如何在Firebase中分页?,firebase,pagination,Firebase,Pagination,在从Google Firebase列出或获取数据列表时,我们如何对收集的数据进行分页? 例如, countries = [ {name: 'Afghanistan', code: 'AF'}, {name: 'Åland Islands', code: 'AX'}, {name: 'Albania', code: 'AL'}, ... ] 我想以每页10为例列出,如果我想以大小为10的page=0或大小为5的page=5为例 { -KBZIPRqYmrRgNZ3GJ
countries = [
{name: 'Afghanistan', code: 'AF'},
{name: 'Åland Islands', code: 'AX'},
{name: 'Albania', code: 'AL'},
...
]
我想以每页10为例列出,如果我想以大小为10的page=0或大小为5的page=5为例
{
-KBZIPRqYmrRgNZ3GJt6: { asc: 1, desc: 9, name: "Rusty Kovacek"},
-KBZIPRvieZbW-k9R9ra: { asc: 2, desc: 8, name: "Lloyd Feil" },
-KBZIPRvieZbW-k9R9rc: { asc: 3, desc: 7, name: "Jasmin Hilll" },
-KBZIPRwiXUgOtv3fCAL: { asc: 4, desc: 6, name: "Ms. Ibrahim Schinner" },
-KBZIPRwiXUgOtv3fCAN: { asc: 5, desc: 5, name: "Dorothea Koepp" },
-KBZIPRxpCAUyo5TJmY3: { asc: 6, desc: 4, name: "Melvin Marquardt" },
-KBZIPRxpCAUyo5TJmY5: { asc: 7, desc: 3, name: "Celestine Bode" },
-KBZIPRy5Uvz9wUOa6Jx: { asc: 8, desc: 2, name: "Emerald Olson" },
-KBZIPRy5Uvz9wUOa6Jz: { asc: 9, desc: 1, name: "Miss Joey Jacobi" },
-KBZIPRzRhuguDLLftQR: { asc: 10, desc: 0, name: "Ms. Denis Rutherford" }
}
及
var-axios=require('axios');
var Firebase=require('Firebase');
var namesRef=新Firebase('https://demos-firebase.firebaseio.com/dataDemo/names');
get(namesRef.toString()+'.json?shallow=true')
.然后(功能(res){
//此列表未排序!!!
//资源数据={
//“-KBZIPRqYmrRgNZ3GJt6”:正确,
//“-KBZIPRwiXUgOtv3fCAN”:正确,
//“-KBZIPRy5Uvz9wUOa6Jx”:正确,
//“-kbziprzrhuguddllftqr”:正确,
//“-KBZIPRxpCAUyo5TJmY5”:正确,
//“-KBZIPRxpCAUyo5TJmY3”:正确,
//“-KBZIPRwiXUgOtv3fCAL”:正确,
//“-KBZIPRvieZbW-k9R9ra”:正确,
//“-KBZIPRvieZbW-k9R9rc”:正确,
//“-KBZIPRy5Uvz9wUOa6Jz”:正确
// }
var keys=Object.keys(res.data).sort();//注意.sort()!
var pageLength=2;
var pageCount=keys.length/pageLength;
var currentPage=1;
var承诺=[];
var-nextKey;
var查询;
对于(变量i=0;i
这个问题已经讨论了很多。你已经读过这本书并尝试过什么了吗?如果没有,我建议你先这样做,如果你陷入困境,再报告更多细节。最近的一个答案是:它不包括我的问题。。。有什么解决办法吗?好的,先获取前10项,然后使用第10项id作为第一项,然后再次获取净10项。!
var axios = require('axios');
var Firebase = require('firebase');
var namesRef = new Firebase('https://demos-firebase.firebaseio.com/dataDemo/names');
axios.get(namesRef.toString() + '.json?shallow=true')
.then(function (res) {
// This list is not sorted!!!
// res.data = {
// '-KBZIPRqYmrRgNZ3GJt6': true,
// '-KBZIPRwiXUgOtv3fCAN': true,
// '-KBZIPRy5Uvz9wUOa6Jx': true,
// '-KBZIPRzRhuguDLLftQR': true,
// '-KBZIPRxpCAUyo5TJmY5': true,
// '-KBZIPRxpCAUyo5TJmY3': true,
// '-KBZIPRwiXUgOtv3fCAL': true,
// '-KBZIPRvieZbW-k9R9ra': true,
// '-KBZIPRvieZbW-k9R9rc': true,
// '-KBZIPRy5Uvz9wUOa6Jz': true
// }
var keys = Object.keys(res.data).sort(); // Notice the .sort()!
var pageLength = 2;
var pageCount = keys.length / pageLength;
var currentPage = 1;
var promises = [];
var nextKey;
var query;
for (var i = 0; i < pageCount; i++) {
key = keys[i * pageLength];
console.log('key', key);
query = namesRef.orderByKey().limitToFirst(pageLength).startAt(key);
promises.push(query.once('value'));
}
Promise.all(promises)
.then(function (snaps) {
var pages = [];
snaps.forEach(function (snap) {
pages.push(snap.val());
});
console.log('pages', pages);
process.exit();
// pages = [{
// '-KBZIPRqYmrRgNZ3GJt6': {
// asc: 1,
// desc: 9,
// name: 'Rusty Kovacek'
// },
// '-KBZIPRvieZbW-k9R9ra': {
// asc: 2,
// desc: 8,
// name: 'Lloyd Feil'
// }
// }, {
// '-KBZIPRvieZbW-k9R9rc': {
// asc: 3,
// desc: 7,
// name: 'Jasmin Hilll'
// },
// '-KBZIPRwiXUgOtv3fCAL': {
// asc: 4,
// desc: 6,
// name: 'Ms. Ibrahim Schinner'
// }
// }, {
// '-KBZIPRwiXUgOtv3fCAN': {
// asc: 5,
// desc: 5,
// name: 'Dorothea Koepp'
// },
// '-KBZIPRxpCAUyo5TJmY3': {
// asc: 6,
// desc: 4,
// name: 'Melvin Marquardt'
// }
// }, {
// '-KBZIPRxpCAUyo5TJmY5': {
// asc: 7,
// desc: 3,
// name: 'Celestine Bode'
// },
// '-KBZIPRy5Uvz9wUOa6Jx': {
// asc: 8,
// desc: 2,
// name: 'Emerald Olson'
// }
// }, {
// '-KBZIPRy5Uvz9wUOa6Jz': {
// asc: 9,
// desc: 1,
// name: 'Miss Joey Jacobi'
// },
// '-KBZIPRzRhuguDLLftQR': {
// asc: 10,
// desc: 0,
// name: 'Ms. Denis Rutherford'
// }
// }]
});
});