在dynamodb中保留关键字 – Swift 3
这是代码:
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"
这样你就不会使用保留字,而是会读取别名。 该别名将解析为您的实际属性名称,该名称可能也是状态。