orchestrate.io与nodejs获取所有记录

时间:2015-11-08 09:43:03

标签: node.js

我正在使用nodejs和Orcestrate db。我想从一个集合中获取所有记录,虽然我有超过限制。我发现了这个:

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 个答案:

答案 0 :(得分: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);
    }

}