Получение алфавитного порядка из запроса 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 не в алфавитном порядке, я думаю, по порядку идентификаторов. Я хотел бы, чтобы окончательный вывод был упорядочен в алфавитном порядке в этом массиве PhysicianList.

Что бы это ни стоило, я использую PouchDB, но я считаю, что запросы должны работать точно так же, как CouchDB.


person Hoser    schedule 14.11.2014    source источник


Ответы (1)


Я не понимал, что порядок переменных вашего emit() был порядком набора результатов (я большой новичок).

В итоге я сделал это:

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

И это сработало именно так, как хотелось (в алфавитном порядке по doc.physicianName).

person Hoser    schedule 14.11.2014
comment
вы также можете сделать emit([doc.PhysicianName, doc.PhysicianKey]), и я полагаю, что это будет работать так же, используя немного меньший индекс на диске. - person nlawson; 15.11.2014