我第一次使用(AWS)DynamoDB
,所以我的问题非常基本。
我已经设置了一个包含一个字段(theField)的表(myTable),我可以一次填充一条记录。
以下是我想要做的事情:进行查询以提取已排序表的第一个元素。我想这简直太难了。
这是我的代码,基于我在AWS文档中可以找到的内容以及网上的一些示例:
let queryExpression = AWSDynamoDBQueryExpression()
queryExpression.scanIndexForward = false
queryExpression.limit = 1
let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()
dynamoDbObjectMapper.query(myTable.self, expression: queryExpression) {
(output: AWSDynamoDBPaginatedOutput?, error: Error?) in
if error != nil {
print("The request failed. Error: \(String(describing: error))")
}
if output != nil {
// Process the output.
}
}
当我运行此代码时,我收到以下错误消息:
The request failed. Error: Optional(Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=0 "(null)"
UserInfo={__type=com.amazon.coral.validate#ValidationException, message=Either the KeyConditions or
KeyConditionExpression parameter must be specified in the request.})
首先,这个KeyConditions或KeyConditionExpression业务是什么? 查询很清楚为什么我需要任何条件?
其次,我当然试图填补一些虚拟条件(根据我在其他帖子上找到的内容)来看看会发生什么,但它从未奏效。
有人能告诉我如何编写queryExpression来做我想做的事吗?
答案 0 :(得分:2)
您没有查询条件。对于查询,您需要至少提供PartitionKey。尝试scan而不是查询。
答案 1 :(得分:1)
您无法从发电机组中提取第一项。不适用于扫描或查询。您必须完全扫描表或使用createdAt作为hashKey / sortKey
创建一个GSI。