Я пытаюсь использовать функцию запроса на сервере AWS DynamodB и вернуть значение индекса, используя только его ключ диапазона.По сути, я хочу, чтобы пользователь мог найти других пользователей, используя только этот ключ диапазона.Моя программа генерирует случайный код от одного пользователя, и предполагается, что другой пользователь сможет найти этого пользователя, не зная его идентификатора и просто зная его случайный код.В данный момент, когда я запрашиваю, он возвращает только пользователей, совпадающих с идентификатором пользователя, который запрашивает устройство, поэтому я пытаюсь запросить только случайный код (который является ключом диапазона).Вот мой код:
let queryExpression = AWSDynamoDBQueryExpression()
queryExpression.keyConditionExpression = "#randomCode = :randomCode AND #userId = :userId"
queryExpression.expressionAttributeNames = [
"#userId": "userId",
"#randomCode": "randomCode"
]
queryExpression.expressionAttributeValues = [
":randomCode": passedCode,
":userId": AWSIdentityManager.default().identityId
]
// 2) Make the query
dynamoDbObjectMapper.query(Timestamps.self, expression: queryExpression) { (output: AWSDynamoDBPaginatedOutput?, error: Error?) in
if error != nil {
print("The request failed. Error: \(String(describing: error))")
}
if output == nil {
print("Nill output")
}
if output != nil {
if output!.items.count == 0 {
print("code not found")
DispatchQueue.main.async {
let animation = CABasicAnimation(keyPath: "position")
animation.duration = 0.07
animation.repeatCount = 4
animation.autoreverses = true
animation.fromValue = NSValue(cgPoint: CGPoint(x: self.codeTextField.center.x - 10, y: self.codeTextField.center.y))
animation.toValue = NSValue(cgPoint: CGPoint(x: self.codeTextField.center.x + 10, y: self.codeTextField.center.y))
self.codeTextField.layer.add(animation, forKey: "position")
}
}
else {
for timestamps in output!.items {
let timestampItem = timestamps as? Timestamps
//print(timestampItem?._songURI as! String)
let currentSong = timestampItem?._songURI as! String
let currentTimestamp = timestampItem?._timestamp
let currentTimestampDouble = currentTimestamp as! Double
//print(currentTimestampDouble)
self.playSync(currentSong: currentSong, currentTimestamp: currentTimestampDouble)
}
}
}
}
Если я передаю ключ хэша как nil или не передаю его вообще, aws возвращает ошибку, что запрос не содержал ключ хэша.Как запросить ключ хеша, которого я не знаю, или как просто запросить ключ диапазона?
Спасибо за чтение!