Couchdb 从数据库查询中获取字母顺序
这就是我的代码当前的样子:Couchdb 从数据库查询中获取字母顺序,couchdb,pouchdb,Couchdb,Pouchdb,这就是我的代码当前的样子: var physicianList = []; function map(doc){ if(doc.PhysicianKey && doc.PhysicianName){ console.log(doc.PhysicianName); emit(doc.PhysicianKey, doc.PhysicianName); } } dbPhysicianList.query({map: map}, fun
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;
}
如您所见,在我的map函数中,我正在注销doc.PhysicianName
,当我这样做时,他们正在按字母顺序注销。然而,我认为他们是按照ID顺序,以非字母顺序被推到physicianList
数组中的。我希望最终输出按照physicianList数组的字母顺序排列
不管怎样,我使用的是PockDB,但我相信查询应该像CouchDB一样工作。我没有意识到您的
emit()
的变量顺序是结果集的顺序(我是一个主要的新手)
我最终做了这样的事:
function map(doc){
emit({physicianName: doc.PhysicianName, physicianKey: doc.PhysicianKey} );
}
它的工作原理完全符合要求(按doc.physicianName
的字母顺序排列)。您也可以执行emit([doc.physicianName,doc.PhysicianKey])
,我相信它的工作原理是一样的,在磁盘上使用稍微小一点的索引。