KeyConditionExpression错误和空错误响应

我使用Lambda作为后端,并且即时执行所有的DynamoDB操作。

我有一个用户表Users ,我想通过它的散列键Username来查询它

在我的paramsvariables上使用KeyConditionExpression语句,但出现以下错误:

有2个validation错误:\ n * MissingRequiredParameter:Missing>必要的键'KeyConditions'中的参数\ n * UnexpectedParameter:Unexpected> key'KeyConditionExpression'in params

所以是的,我尝试了以下遗留声明:

 var userQuery = { TableName:"Users", KeyConditions:{ Username:{ ComparisonOperator:'EQ', AttributeValueList:[{S:"some_username"}] } } }; 

出于某种原因,我得到查询callback空的错误,看起来像这样:

 dynamo.query(userQuery,function(err,data){ if(err) console.log("error "+JSON.stringify(err,null,2)); else console.log("pass "+JSON.stringify(data,null,2)); }); 

我已经从字面上尝试了一切,变得绝望了。

我似乎无法查询任何表,但我可以扫描和使用putItem没有问题。 我的策略也有查询参数。

 { "Version": "2012-10-17", "Statement": [ { "Sid": "my_Stmt_num", "Action": [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "", "Resource": "*", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Effect": "Allow" } ] } 

如果它的相关,在我的处理程序的顶部js文件即时获得像这样的发电机的参考:

 var doc = require('dynamodb-doc'); var dynamo = new doc.DynamoDB(); 

我的整个应用程序是“新”,意味着2015年2月之前没有任何东西存在,所以我没有看到使用传统API的任何一点,正如文档所说。

这听起来像是与您的文档客户端关联的AWS开发工具包可能已经过时,并且不支持新的KeyConditionExpressionfunction。 您能否尝试重新安装AWS SDK和文档SDK? 如果在重新安装后仍然有问题,请附上您正在安装的版本。

以前的DynamoDB Document SDK已被弃用,从现在开始应该使用标准Javascript SDK中的新客户端:

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html