Skip to main content
 首页 » 操作系统

ios之DynamoDB batchGetItem 返回错误 : "Supplied AttributeValue is empty"

2024年01月01日45me-sa

哈希和范围都指定了,它还认为一个是空的?还是在谈论其他一些属性?

返回的 task.result() 为 nil,task.error() 表示:

"Error Domain=com.amazonaws.AWSDynamoDBErrorDomain Code=0 "Supplied AttributeValue is empty, must contain exactly one of the supported datatypes" UserInfo=0x7ff3c0e21d40 {NSLocalizedDescription=Supplied AttributeValue is empty, must contain exactly one of the supported datatypes}"

我确信哈希和范围名称是正确的,表名也是如此。

用 Swift 编写,这是我的代码:

var venueIdAttribute = AWSDynamoDBAttributeValue() 
venueIdAttribute.N = "2164156" 
 
var venueIdCondition = AWSDynamoDBCondition() 
venueIdCondition.comparisonOperator = .EQ // Hash Key must always be Equals 
venueIdCondition.attributeValueList = [venueIdAttribute] 
 
var startDateAttribute = AWSDynamoDBAttributeValue() 
var startString = String(format:"%1.0f", lastSyncDate.timeIntervalSince1970 * 1000) 
startDateAttribute.N = String(format:"%1.0f", lastSyncDate.timeIntervalSince1970 * 1000) 
 
var dateCondition = AWSDynamoDBCondition() 
dateCondition.comparisonOperator = .GT 
dateCondition.attributeValueList = [startDateAttribute]; 
 
var keysArray : NSArray = [["venueId" : venueIdCondition, "dateInterval" : dateCondition]] 
var keysAndAttributes : AWSDynamoDBKeysAndAttributes = AWSDynamoDBKeysAndAttributes() 
keysAndAttributes.keys = keysArray; 
 
var requestMap : NSDictionary = ["myTableName":keysAndAttributes] 
 
var request : AWSDynamoDBBatchGetItemInput = AWSDynamoDBBatchGetItemInput() 
request.requestItems = requestMap 
 
var response : BFTask = dynamoDB.batchGetItem(request)  // This is synchronous 

请您参考如下方法:

keysArray 在代码片段中的格式不正确。您正在创建一个 NSString : AWSDynamoDBCondition 字典,但它必须是 NSString : AWSDynamoDBAttributeValue 字典。以下引用可能有助于理解如何格式化 BatchGetItem 请求。