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