2015-05-06 2 views
0

Я получаю следующее сообщение об ошибке:TypeError: Не удается прочитать свойство

2015-05-06T15:51:43.332-0700 map reduce failed:{ 
"errmsg" : "exception: TypeError: Cannot read property 'Dockey' of undefined near 'essaged[0].Dockey) {   return;  ' ", 
"code" : 16722, 
"ok" : 0 
} at src/mongo/shell/collection.js:1224 

Вот сценарий, я бегу это карта уменьшить сценарий запуска против Монго дб.

function mapFunction() { 
    if (!this.eventdata || !this.eventdata.Messaged || this.eventdata.Messaged.length === 0 || !this.eventdata.Messaged[0].Dockey) { 
     return; 
    } 
    emit({ 
     entityid: this.entityid, 
     eventType: this.eventType, 
     profileid: (this.eventdata.Messaged[0].Dockey || this.eventdata.Messaged[0].PID) 
    }, { 
     datecreated: this.datecreated 
    }); 
} 

function reduceFunction(key, values) { 
    var reducedValue = values[0], 
     i; 

    for (i = 1; i < values.length; i++) { 
     if (values[i].datecreated > reducedValue.datecreated) { 
      reducedValue = values[i]; 
     } 
    } 

    return reducedValue; 
} 



var res = db.TRACKING_DATA.mapReduce(mapFunction, 
    reduceFunction, { 
     out: { 
      reduce: "LASTCONNECTED_ALLTYPES" 
     }, 
     query: { 
      datecreated: { 
       $gt: ISODate("2015-03-11T18:00:00.000Z") 
      } 
     }, 
    } 
) 

Вот запись документ из коллекции:

"_id": "0003e88f-37ed-493c-930e-f401821faca1", 
"_class": "com.daoservice.model.TrackingData", 
"modified": ISODate("2015-03-03T22:00:04.679Z"), 
"eventtype": "@Connect button clicked and default email tab opened", 
"eventdata": { 
    "Messaged": [{ 
     "ViewedID": "4918faab-2eca-4b36-8ca7-342f064a4699", 
     "Dockey": "ad30d3c827e2f1f44d4bae598ac14093", 
     "PID": "", 
     "UID": "", 
     "connectDate": ISODate("2015-03-03T22:00:04.676Z"), 
     "connectID": "fcd6d2cb-1f2d-43ac-b42d-deec7f5d7931", 
     "urlClicked": "", 
     "email": "" 
    }] 
}, 
"eventsource": "Customer App", 
"sourceip": "210.7.77.202", 
"entityid": "1652430", 
"groupid": "15013", 
"datecreated": ISODate("2015-03-03T22:00:04.674Z") 
+0

ошибки говорит '' 'essaged [0] .Doc''' - если она не будет' '' обменивались сообщениями [0] .Doc'' '? –

+0

прокрутить вправо немного больше :) – Will

+0

Возможно, я ошибаюсь, на самом деле, скорее всего, я, но вторая строка в сообщении об ошибке '' 'TypeError: Невозможно прочитать свойство« Dockey »неопределенного рядом с essaged [0] .Dockey) {'' '..... –

ответ

0

Messaged массив не имеет членов, но вы пытаетесь получить прямой доступ к одному в последнем условии проверки !this.eventdata.Messaged[0].Dockey. Убедитесь, что массив Messaged имеет член, к которому вы пытаетесь получить доступ, прежде чем делать это.

!this.eventdata.Messaged[0] 

И ваше окончательное условие должно выглядеть

if (!this.eventdata || !this.eventdata.Messaged || this.eventdata.Messaged.length === 0 || !this.eventdata.Messaged[0] || !this.eventdata.Messaged[0].Dockey) { 
Смежные вопросы