我正在使用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) {
})
但它不会帮助我,因为我真的不知道我会有多少页。 我对递归和嵌套的回调感到困惑。
谢谢!
答案 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);
}
}