2017-09-16 29 views
5

Google Firebaseからデータリストをリスティングまたは取得する際に、収集したデータをページングするにはどうすればよいですか?例として 、Firebaseでページを作成するにはどうしたらいいですか?

countries = [ 
    {name: 'Afghanistan', code: 'AF'}, 
    {name: 'Åland Islands', code: 'AX'}, 
    {name: 'Albania', code: 'AL'}, 
... 
] 

私はページあたり10としてリストしたいと私は例としてpage =0 with size 10またはpage=5 with size=5

+0

この質問は既にかなりカバーされています。 [その他の質問](https://www.google.com/search?q=site:stackoverflow.com+firebase+pagination)を読み、何かを試しましたか?そうでない場合は、最初にやり直してください。 –

+2

最近の回答:https://stackoverflow.com/questions/45914345/how-to-read-firebase-database/45920801#45920801 –

+0

問題は解決しません...解決策はありますか? –

答えて

2

を取得したい場合

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

     }); 
    }); 
関連する問題