2016-07-22 55 views
0

我有一個nodejs lambda函數,其中的代碼包含toString()函數我們通常用來將某些東西轉換爲字符串值。AWS lambda TypeError:無法讀取未定義的屬性'toString'

當我在AWS拉姆達的控制檯直接寫代碼的作品完美,但是當我上傳使用S3存儲相同的功能,它拋出下面的錯誤

TypeError: Cannot read property 'toString' of undefined 
at Response.<anonymous> (/var/task/GetAssetMobile3.js:46:40) 
at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:355:18) 
at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:105:20) 
at Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:77:10) 
at Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:615:14) 
at Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10) 
at AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12) 
at /var/task/node_modules/aws-sdk/lib/state_machine.js:26:10 
at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9) 
at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:617:12 

功能代碼:

"use strict"; 

var AWS = require('aws-sdk'); 
var s3 = new AWS.S3(); 
var lambda = new AWS.Lambda(); 
var pg = require('pg'); 
console.log('Loading function'); 
exports.handler = function(event, context, callback) { 

var userName=event.headers.username; 
var passWord=event.headers.password; 
var partybranchid ="event.body.FieldValue"; 
var modifiedon="event.body.ModifiedON"; 
var RES; 
var params = { 
     FunctionName: 'ServiceAuthentication', 
     InvocationType: 'RequestResponse', 
     LogType: 'Tail', 
     Payload: '{ "userName": "'+userName+'","passWord": "'+passWord+'" }' 
}; 
lambda.invoke(params, function(err, data) { 
    if (err) { 
     context.fail(err); 
     console.log("Response is not received error in login invoking function "); 
    } else { 
     var response=data.Payload; 
     var auth=response.replace('"true"','true'); 
     if(auth === 'true'){ 
      console.log("authentication is true continue process"); 
      s3.getObject({ 
       Bucket: 'awslambdaoregon', 
       Key: 'DBURL.txt' 
       }, function (err, data) { 
        if(err){ 
         console.log('calling s3 DBURL file failed '); 
        } 
       }); 
      var connectionString=data.Body.toString();  
      var client = new pg.Client(connectionString); 
      client.connect(function(err) { 
      if(err) { 
        console.log(err); 
       }else{ 
      var Query ='select * from masset where partybranchid='+partybranchid+'; 

      console.log('executing query',Query); 
      client.query(Query, function(err, result) { 

      if(err){ 
       console.log('Error in executing Query'); 
       client.end(); 
      } else { 
    console.log(' executing Query successful'); 
       } 
      } 
      });} 
      }); 

     }else{ 
      RES = '{"ResponseJSON":{"Body":{"Datalist":{"Authentication":'+response+'}}}}'; 
     } 
    callback(null, JSON.parse(RES)); 
    } 
    }); 
}; 

在上面的代碼行var connectionString = data.Body.toString();將收到的數據轉換爲字符串,但toString()不起作用。 如何克服這個錯誤,我錯過了什麼安裝在node_module文件夾?

+0

我認爲我們需要您的代碼來幫助您。 – hellomichibye

+0

@hellomichibye我編輯了代碼的問題。 – user4045063

+2

你有調用時傳入的數據對象嗎?對我來說,它看起來像身體沒有定義,這就是爲什麼你不能調用toString()。 –

回答

0

你有調用時傳入的數據對象嗎?對我來說,它看起來像身體沒有定義,這就是爲什麼你不能調用toString()。

相關問題