मैं एडब्ल्यूएस एसिंक लैम्ब्डा फ़ंक्शन काम कर रहा हूं जो मेरे एलेक्सा स्मार्ट होम स्किल के लिए डायनेमोडीबी टेबल पर डेटा लिखता है। मेरी समस्या यह है कि यह async का उपयोग कर डेटाबेस नहीं लिखता है। हालांकि, मैं इसे सिंक्रोनस में परिवर्तित करता हूं, यह सही तरीके से काम करेगा। मुझे जावास्क्रिप्ट के साथ ज्यादा अनुभव नहीं है और वादों का उपयोग करने के साथ शून्य अनुभव है। मैं जानना चाहता हूं कि मेरे कोड/वादे में क्या गलत है।

आपकी मदद या सुझाव के लिए धन्यवाद!

exports.handler =  async function (event, context) {

    // Dump the request for logging - check the CloudWatch logs
    console.log("index.handler request  -----");
    sendToDynamo("Signal-01","powerState","ON");

}

function sendToDynamo(endpoint,state,value) {
  console.log("send to dynamo start")

  var ddb = new AWS.DynamoDB({
                  apiVersion: '2012-08-10',
                  region: 'us-east-1'})

  var params = {
      TableName: "TestDB",
      Item: {
          'ItemId':{
            S: endpoint  
          } ,
          'State':{
            S: state  
          } ,
          'Value':{
            S: value  
          } 
      }
  };

  var putObjectPromise = ddb.putItem(params).promise();

    putObjectPromise.then(function(data) {
      console.log('*** Success ***');
    })
    .catch(function(err) {
      console.log(err);
    });
}
-1
PKonstant 29 अक्टूबर 2019, 21:35

1 उत्तर

सबसे बढ़िया उत्तर
exports.handler =  async function (event, context) {

    // Dump the request for logging - check the CloudWatch logs
    console.log("index.handler request  -----");
    let data = await sendToDynamo("Signal-01","powerState","ON").catch(console.log);
    console.log('*** Success ***');
}

function sendToDynamo(endpoint,state,value) {
  console.log("send to dynamo start")

  var ddb = new AWS.DynamoDB({
                  apiVersion: '2012-08-10',
                  region: 'us-east-1'})

  var params = {
      TableName: "TestDB",
      Item: {
          'ItemId':{
            S: endpoint  
          } ,
          'State':{
            S: state  
          } ,
          'Value':{
            S: value  
          } 
      }
  };

  return ddb.putItem(params).promise();
}
1
LostJon 29 अक्टूबर 2019, 18:48