gpt4 book ai didi

ios - 使用 Swift 3 的 DynamoDB 中的保留关键字 ExpressionAttributeValues

转载 作者:行者123 更新时间:2023-12-02 07:42:37 25 4
gpt4 key购买 nike

我能够在没有 :status : 接受表达式属性值的情况下获得响应,但是有了它,当我在projectionExpression行中使用#status时,我收到以下错误(状态是DynamoDB中的保留字,所以我有在每个 https://stackoverflow.com/a/45952329/5921575 中添加主题标签):

Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=0 "(null)" 
UserInfo={__type=com.amazon.coral.validate#ValidationException,
message=Value provided in ExpressionAttributeValues unused in expressions: keys: {:status}}

这里是代码:

queryExpression.keyConditionExpression = "#userId= :userId"
queryExpression.expressionAttributeNames = ["#userId":"userId", "#status":"status"]
queryExpression.expressionAttributeValues = [":userId":userID, ":status":"accept"]
queryExpression.projectionExpression = "#status"

我可以不使用 ":status":"accept"但我不想得到很多没有接受值的项目。我无法在此链接或 stackoverflow 上的任何位置找到答案: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html

谢谢!

最佳答案

有点晚了,但是:你的投影表达式不应该是“#status”,而应该是另一个不是状态的词。 Status 是保留字,因此不要将其用于投影表达式。请参阅此处,了解有关需要使用保留字时该怎么做的文档:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html#Expressions.ExpressionAttributeNames.ReservedWords

另一方面,

userId 不需要投影表达式,因为它不是保留字。请参阅此处以获取保留字列表:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html

但是,您不需要投影表达式。您可以简单地使用下面的代码。定义“queryExpression.expressionAttributeNames”以创建状态属性值的替代名称。在这里,我使用短语“statusVal”作为替代。

试试这个。 (这对我有用)

let queryExpression = AWSDynamoDBQueryExpression()
queryExpression.expressionAttributeNames = ["#statusVal":"status"] // Using statusVal because it is not reserved. You only need statusVal here because it is the only attribute that also happens to be an AWS reserved word.
queryExpression.keyConditionExpression = "userId = :uId AND #statusVal = :sV"
queryExpression.expressionAttributeValues = [
":uId" : String(describing: userId),
":sV" : "accept"]

然后使用AWSDynamoDBObjectMapper执行操作!祝你好运!

关于ios - 使用 Swift 3 的 DynamoDB 中的保留关键字 ExpressionAttributeValues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46132580/

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