尝试使用nodejs sdk根据dynamodb api document使用KeyConditionExpression。 nodejs SDK不支持KeyConditionExpression。
这就是我做的事情
创建一个包含哈希和范围的表。
Table : TABLE1
Hash Attribute Name : Provider ( String)
Range Attribute Key : ScheduledEndTime ( Number ) // In Milli Seconds
这是触发Dynamo数据库查询的有效负载:
{
TableName: 'TABLE1',
ConsistentRead: true,
Select: "ALL_ATTRIBUTES",
KeyConditionExpression: 'Provider = :v_provider AND ScheduledEndTime > :v_scheduledEndTime',
ExpressionAttributeValues: {
":v_provider": {
S: "amazon"
},
":v_scheduledEndTime": {
N: "10"
}
}
};
但是,上面的有效负载抛出错误
[Error: MultipleValidationErrors: There were 2 validation errors:
* MissingRequiredParameter: Missing required key 'KeyConditions' in params
* UnexpectedParameter: Unexpected key 'KeyConditionExpression' found in params]
[Error: MultipleValidationErrors: There were 2 validation errors:
* MissingRequiredParameter: Missing required key 'KeyConditions' in params
* UnexpectedParameter: Unexpected key 'KeyConditionExpression' found in params]
根据文档,如果我们使用KeyConditionExpression,SDK不应该考虑KeyConditions键,我也尝试使用最新的nodejs sdk。 有效载荷模式有什么问题吗?
答案 0 :(得分:4)
我认为某些地方(特别是Lambda)默认情况下会为您提供错误的API版本。当我遇到这个问题时,用以下内容替换我的dynamo实例解决了问题:
var AWS = require("aws-sdk");
var dynamo = new AWS.DynamoDB({apiVersion: '2012-08-10'});