我们如何在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

在从Google Firebase列出或获取数据列表时,我们如何对收集的数据进行分页? 例如,

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'
        //   }
        // }]

      });
  });