aws DynamoDB getItem InvalidParameterType错误

时间:2016-10-08 00:36:17

标签: javascript amazon-web-services reactjs amazon-dynamodb

我一直在尝试使用aws DynamoDB与我的ReactJS应用程序通信,但不断收到InvalidParameterType错误。 apikey,密钥和区域已被确认正确。跳过用户界面部分,我已尝试将请求Key硬编码为params,因此错误并非来自其他部分。相关代码是:

var AWS = require('aws-sdk');
var client = new AWS.DynamoDB({apiVersion: '2012-08-10'});
var params = {
  TableName: "customer",
  Key:
    {
      "email" : "12345@qwerrrr.com"
    }
}
client.getItem(params, function(err, data) {
    if(err){
        console.log(err);
    }else{
        console.log(data)
    }
});`

错误是(跳过' 0'到' 16')的相同部分:

  Error: There were 18 validation errors:
* InvalidParameterType: Expected params.Key['email'] to be a structure
* UnexpectedParameter: Unexpected key '0' found in params.Key['email']

我的dynamoDB看起来像这样: enter image description here

2 个答案:

答案 0 :(得分:1)

您的关键参数应如下所示:

Key : { 
  "email" : {
    "S" : "12345@qwerrrr.com"
  }
}

如下所示:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#getItem-property

答案 1 :(得分:0)

您可以使用AWS.DynamoDB.DocumentClient来避免指定类型。

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#get-property

var AWS = require('aws-sdk');
var client = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
var params = {
  TableName: "customer",
  Key:
    {
      "email" : "12345@qwerrrr.com"
    }
};
client.get(params, function(err, data) {
    if(err){
        console.log(err);
    }else{
        console.log(data)
    }
});`