这是代码:
queryExpression.keyConditionExpression = "#userId= :userId"
queryExpression.expressionAttributeNames = ["#userId":"userId", "#status":"status"]
queryExpression.expressionAttributeValues = [":userId":userID, ":status":"accept"]
queryExpression.projectionExpression = "status"
但我收到以下错误,我不知道状态字是 DynamoDB 中的保留字:
Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=0 "(null)" UserInfo={message=Invalid ProjectionExpression: Attribute name is a reserved keyword; reserved keyword: status, __type=com.amazon.coral.validate#ValidationException}
我查看了下面的链接,但我不明白,也找不到 Swift 示例。我该如何实现?http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html#Expressions.ExpressionAttributeNames.ReservedWords
我是 DynamoDB 的新手。
谢谢!
以下是 DynamoDB 中所有保留字的列表:http ://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html
所以ExpressionAttributeNames
和expressionAttributeValues
是混淆使用的方式#fooattribute
和:foovalue
即使foo
是上述列表中的保留字。
因此,在您的情况下,我相信您的错误是因为该术语status
已被保留,您可以尝试将最后一行更改为:
queryExpression.projectionExpression = "#status"
这样你就不会使用保留字,而是会读取别名。该别名将解析为您的实际属性名称,也可能是状态。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句