Невозможно прочитать свойство totalCalls из undefined - PullRequest
0 голосов
/ 11 июля 2020

Я работаю над AWS Lambda и пишу метод в Node.js, и когда я запускаю метод, он выдал ошибку

**Cannot read property 'totalCalls' of undefined**

вот мой код

  const mysql = require('mysql');
  const moment = require("moment");
var pool  = mysql.createPool({
  host: process.env.RDS_HOSTNAME,
  user: process.env.RDS_USERNAME,
  password: process.env.RDS_PASSWORD,
  port: process.env.RDS_PORT,
  database: process.env.RDS_DATABASE
});

exports.handler = (event, context, callback) => {
  console.log('Events:',event);
  //let QueueID = event['queueId'];
  // allows for using callbacks as finish/error-handlers
  context.callbackWaitsForEmptyEventLoop = false;
pool.getConnection(function(err, connection) {
    if (err) throw err;
     var d = new Date();
        let currentDay = moment(d).format('MM-DD-YYYY');
        console.log('CurrentDay:',currentDay);
        let sub = 6;
        d.setDate(d.getDate() - sub);
        d.setHours(00);
        d.setMinutes(00);
    let sql = `select * from ctrData2.CallDetail WHERE InitiationTimestamp > ? ORDER BY InitiationTimestamp ASC`;
    //let field = [QueueID];
    connection.query(sql,[d], function (err, result, ) {
      if (err) throw err;
    //   connection.release();
       var CallaboveSla =0;
       var weeklySLAObject={};
       result.forEach(d => {
           if(weeklySLAObject[d.RoutingProfileName] !== undefined){
               console.log('Do i comere here',weeklySLAObject)
               weeklySLAObject.RoutingProfileName.totalCalls++;
               if(d.AgentInteractionDuration > 180){
                   if(weeklySLAObject.RoutingProfileName.callsaboveSla){
                       weeklySLAObject.RoutingProfileName.callsaboveSla++;
                   }else{
                       weeklySLAObject.RoutingProfileName.callsaboveSla=0
                   }
               }
           }else{
               weeklySLAObject[d.RoutingProfileName] = {totalCalls: 0,callsaboveSla:0};
           }
            // let date = new Date(d.ConnectedToAgentTimestamp);
            // let DateNow = moment(date).format('MM-DD-YYYY');
            // let datetoday = new Date();
            // datetoday.setDate(datetoday.getDate() - 7); //set it to 6 days back
            // weeklySLAObject.push(d);
            
            });
       let sla = (CallaboveSla/result.length)*100;
       callback(null,weeklySLAObject);
    });
  });
};

Я понятия не имею, что это за ошибка с

Напечатано на консоли и удалось получить общее количество.

значения отображаются в консоль, но в ответ выдала ошибку.

1 Ответ

0 голосов
/ 11 июля 2020

Вы проверяете это на неопределенное:

if(weeklySLAObject[d.RoutingProfileName] !== undefined){

Но затем вы получаете доступ к другому свойству

weeklySLAObject.RoutingProfileName

которое, вероятно, следует изменить на

weeklySLAObject[d.RoutingProfileName].totalCalls++
...