2015-11-08 51 views
0

我正在使用nodejs和Orcestrate db。我想從一個集合中獲取所有記錄,儘管我的數量超過了限制。我發現這個:orchestrate.io與nodejs獲取所有記錄

db.list('address-book', {limit:10}) 
.then(function (page1) { 
    // Got First Page 
    if (page1.links && page1.links.next) { 
    page1.links.next.get().then(function (page2) { 
     // Got Second Page 
    }) 
    } 
}) 
.fail(function (err) { 
}) 

但它不會幫助我,因爲我不知道我會有多少頁。 我感到困惑與遞歸和嵌套回調。

謝謝!

回答

1

好了,我成功地創造了這個問題的遞歸解決方案:

odb.list(collectionName, {limit:5}) 
     .then(function (page) { 
      // Got First Page 
      resArray=[]; 
      resArray.push(page.body.results); 
      //make recursive call fir fetching new pages 
      recSearch(page,resArray,callback) 

     }) 
     .fail(function (err) { 

     }) 


function recSearch(page, resArray, callback){ 
//check if there is more pages 
    if (page.links && page.links.next) { 
     page.links.next.get().then(function (page2) { 
      //push another page result to the array 
      resArray.push(page2.body.results); 
      recSearch(page2,resArray,callback)//recursice call for next page 
     }) 
    }else{ 
    //case there is no more pages to go, put all values in one array 
    //and callback the original function  
     var valuesArray = new Array; 
     for (var onePage in resArray){ 
      for (var o in resArray[onePage]){ 
       valuesArray.push(resArray[onePage][o].value; 
      } 
     } 
     callback(null,valuesArray); 
    } 

}