1

I always have reduce issue on practicing, like following map and reduce, if I add more document or add more field to emit in the map and reduce like following. it will return values as [], not sure what occur this?

                problemNumber : doc.problemNumber,
                UserId: idv,
                event : doc.event
......

Map

function(doc) {
        if(doc.event){
           var idv = null;
                 for (var idu in doc.Data.users){
                   if (doc.eventData.users[idu].userTypeCode == "M"){

                       idv = doc.Data.users[idu].UserId;
            }
                }
            var newDoc = {
                problemNumber : doc.problemNumber,
                UserId: idv,
                event : doc.event

            };
          emit(null, newDoc);
      }
    }

Reduce

function(keys, values, rereduce) {
    var result = [];
    var closeMap = {};
    for (var i=0; i<values.length; i++){
       var doc = values[i];
       if (doc.event=='CLOSE'){
           closeMap[doc.problemNumber] = 1;
       }
    }
    for (var i=0; i<values.length; i++){
       var doc = values[i];
       if (doc.event=='OPEN'){
           if (closeMap[doc.problemNumber]){
               doc.event = 'CLOSE';
           }
           result.push(doc);
       }
    }
    return result;
}
Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
Jamesjin
  • 371
  • 2
  • 6
  • 15
  • 1
    Off the cuff, it looks like you haven't considered the `rereduce` case, it can have a big impact on how your reduce fn is invoked, so I suspect that may be part of the problem here. (check out the [documentation](http://docs.couchdb.org/en/1.6.1/couchapp/ddocs.html#reduce-and-rereduce-functions)) – Dominic Barnes Jun 17 '16 at 20:40

0 Answers0