gpt4 book ai didi

ios - 仅使用 swift 中的范围键查询 AWS DynamoDB 服务器

转载 作者:行者123 更新时间:2023-11-30 11:30:27 24 4
gpt4 key购买 nike

我正在尝试在 aws dynamodb 服务器上使用查询函数,并仅使用其范围键返回索引的值。基本上我希望用户能够仅使用此范围键找到其他用户。我的程序从一个用户生成随机代码,而另一个用户应该能够在不知道其用户 ID 且只知道其随机代码的情况下找到该用户。目前,当我查询时,它只返回与正在查询的设备匹配相同用户 ID 的用户,因此我尝试仅查询随机代码(即范围键)。这是我的代码:

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 将返回一个错误,指出查询不包含哈希键。如何查询我不知道的哈希键,或者如何查询范围键?

感谢您的阅读!

最佳答案

您无法使用当前拥有的索引执行该查询。您需要创建一个 Global Secondary Index在以 randomCode 作为该索引的主键的表上。然后,您可以通过指定查询使用全局二级索引,仅按randomCode进行查询。

关于ios - 仅使用 swift 中的范围键查询 AWS DynamoDB 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50309226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com