2014-11-14 71 views
3

這是我的代碼目前的樣子:獲取字母順序從pouchDB查詢

var physicianList = []; 

function map(doc){ 
    if(doc.PhysicianKey && doc.PhysicianName){ 
     console.log(doc.PhysicianName); 
     emit(doc.PhysicianKey, doc.PhysicianName); 
    } 
} 

dbPhysicianList.query({map: map}, function(error, response){ 
    if(!error){ 
     angular.forEach(response.rows, function(physician){ 
      physicianList.push(physician); 
     }) 
     deferred.resolve(physicianList); 
    }else{ 
     console.log(error); 
     deferred.reject(); 
    }}, {include_docs: true}); 


    return deferred.promise; 
} 

正如你所看到的,在我的地圖功能我退出doc.PhysicianName,我這樣做的時候,他們是按字母順序登出。然而,他們被推入physicianList陣列非字母順序,我認爲通過ID順序。我希望最終的輸出在該physicianList數組中按字母順序排列。

爲什麼它的價值,我使用PouchDB,但我相信查詢應該像CouchDB一樣工作。

回答

2

我沒有意識到你的emit()變量的順序是結果集的排序(我是一個主要的新手)。

我落得這樣做:

function map(doc){ 
    emit({physicianName: doc.PhysicianName, physicianKey: doc.PhysicianKey}); 
} 

而且它的工作完全按需要(通過doc.physicianName按字母順序排列)。

+1

你也可以'emit([doc.PhysicianName,doc.PhysicianKey])'',我相信它的工作原理是一樣的,在磁盤上使用稍小的索引。 – nlawson