1

Hallo Ich bin mir wirklich nicht sicher, wie das zu beheben ist. Beim Testen in Lambda bekomme ich mehrere Fehler. Ich suchte herum und Leute sagten, auf das späteste SDK zu aktualisieren, das ich tat, aber die gleichen Fehler noch empfange. Ich habe versucht, andere apis in neuem AWS zu verwenden.DynamoDB.DocumentClient(); aber das gibt nur undefined in meinen Protokollen zurück. Wie kann ich meinen Code von DynamoDB abfragen lassen?DynamoDB Query-Fehler: Mehrere Validierungsfehler

'use strict'; 

var APP_ID = "amzn1.echo-sdk-ams.app.ca7e2a16-1bf9-4b5b-8a7e-8c15fb0ccd9d"; 


var AlexaSkill = require('./AlexaSkill'); 



var SatTracker = function() { 
    AlexaSkill.call(this, APP_ID); 
}; 
var AWS = require('aws-sdk'); 
AWS.config.update({region: 'us-east-1'}); 
var doc = require("dynamodb-doc"); 

var dynamodb = new AWS.DynamoDB.DocumentClient(); 

function getZipcode(zipcode) { 

    var queryParams = { 
     TableName : "ZipcodeUSA", 
     KeyConditionExpression: "#zc = :zip", 
     ExpressionAttributeNames:{ 
      "#zc": "zipcode" 
     }, 
     ExpressionAttributeValues:{ 
      ":zip":zipcode 
     } 
    };  
    console.log("about to start dynamoDB query with zipcode: " + zipcode); 
    dynamodb.query(queryParams, function(err, data) { 
     if (err) { 
      console.log("error in dynamo.query of getZipcode funtion: " + err); 
     } else { 
     var zipData; 
     console.log("starting dynamoDB query with zipcode: " + zipcode); 
     if (data && data.Items && data.Items.length > 0) { 
      console.log("Found " + data.Items.length + " matching zipcode"); 
      if (data.Items.length === 1) { 
       zipData = data.Items[0]; 
       return zipData; 
      } 
     } 


     } 
     console.log("completed dynamo.query with zipcode: " + err); 
    });  
} 
+1

Welche Fehler Sie bekommen? –

+0

Ich bekam einen multiplevalidationerror, aber jetzt stoppt die Abfrage gerade bei undefined. –

Antwort

1

Stellen Sie sicher, dass die Postleitzahl, die Sie an Ihre ExpressionAttributeValues ​​übergeben, tatsächlich ein Objekt ist. Unter der Annahme, zipcode ein String ist, sollte es so aussehen:

var queryParams = { 
    TableName : "ZipcodeUSA", 
    KeyConditionExpression: "#zc = :zip", 
    ExpressionAttributeNames:{ 
     "#zc": "zipcode" 
    }, 
    ExpressionAttributeValues:{ 
     ":zip": { "S" : zipcode } // S if your zip code is a String N if its a number 
     } 
};  

this helps