在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

所以ExpressionAttributeNamesexpressionAttributeValues是别名的方式,使用#fooattribute:foovalue即使foo是上面列表中的保留字。

所以在你的情况下,我相信你的错误是因为术语status是保留的,你可以尝试改变你的最后一行:

queryExpression.projectionExpression = "#status"

这样你就不会使用保留字,而是会读取别名。 该别名将解析为您的实际属性名称,该名称可能也是状态。