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

2024-03-31

我能够在没有 :status : 接受表达式属性值的情况下获得响应,但是有了它,当我在projectionExpression 行中使用 #status 时,我收到以下错误(状态是 DynamoDB 中的保留字,因此我必须添加主题标签有每https://stackoverflow.com/a/45952329/5921575 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 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html

Thanks!


有点晚了,但是:您的投影表达式不应该是“#status”,而应该是另一个不是状态的单词。 Status 是保留字,因此不要将其用于投影表达式。请参阅此处,了解有关需要使用保留字时该怎么做的文档:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html#Expressions.ExpressionAttributeNames.ReservedWords 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 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执行操作!祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Swift 3 的 DynamoDB 中的保留关键字 ExpressionAttributeValues 的相关文章

随机推荐

  • Android 6.0 未经许可捕获图像

    我需要让用户使用 Android 6 0 拍照 从图库或相机应用程序 因为我不需要控制相机 所以我想使用此处描述的意图 但是 如果您不需要此类控制 则可以仅使用 ACTION IMAGE CAPTURE 意图来请求图像 当您启动意图时 系统
  • 在 watir 中自动下载文件

    如何一键点击链接自动从浏览器下载 Excel 文件 而无需通过 watir 中的 另存为 和其他窗口 我试图保持它独立于操作系统 所以对使用 win32ole gem 不感兴趣 为了这个任务 我调整了我的个人资料偏好 我的代码如下所示 镀铬
  • 如何防止 Axios 对我的请求参数进行编码?

    我正在尝试通过 GET 请求中的 URL 参数传入 API 密钥 但是 我注意到 Axios 在发送请求时对我的 API 密钥中的字符进行编码 这会导致 API 拒绝我的请求 因为它无法识别我的密钥 如何防止 Axios 对我的 GET 参
  • C 代码在 Linux 上编译错误(相同代码在 OSX 上编译)

    我正在尝试在 Linux 上编译一些我知道可以在 OSX 上编译的代码 但我遇到了一些问题 所有文件都有名为 h 的标头 并且所有文件都位于同一目录中 我是这样编译的 gcc c std c99 lpthread 虽然这段代码确实可以在 O
  • DynamoDB 触发器 Lambda 函数问题:函数调用失败

    我在 dynamoDB 表上启用了流 当项目被修改时 会触发 lambda 函数 我认为我在 lambda 触发器端 权限和 dynamodb 端都正确设置了所有内容 我还使用测试数据运行了 lambda 函数 并且成功了 但是 当修改表中
  • 包含不同类型的列表

    我目前正在编写自己的结构 它可以同时处理整数和字符串 就像是 data Collection One Int Two String Three Collection Collection 但是 我试图编写一个可以将我的结构转换为列表的函数
  • 在 Linux 上以 root 身份调用 SCHED_FIFO 线程的 pthread_create() 时获取 EPERM

    我试图在 Linux 系统上以 SCHED FIFO 或 SCHED RR 策略作为 root 生成线程 但我对 pthread create 的调用返回 1 EPERM pthread create 的手册页指出 EPERM 指示 调用者
  • 如何解决“通过 HTTPS 加载不安全内容,但请求不安全资源”的问题

    这个网址 https slowapi com https slowapi com 我找不到不安全的内容 Chrome 一直抱怨 有任何想法吗 通过添加元标记来更新链接 如下所示 Note 这是一个hot fix当您将产品从非 ssl 更新为
  • 如何获取 git diff 文件,并将其应用到作为同一存储库副本的本地分支?

    我有一个由同事创建的 diff 文件 并且希望将该 diff 文件中列出的更改应用到完全相同存储库的本地分支 我无权访问用于生成此差异文件的该工作人员的电脑或分支 显然 我可以逐行重新输入所有内容 但我不想让系统遭受人为错误 做到这一点最简
  • 从 React 子元素获取 DOM 节点

    使用React findDOMNodev0 13 0 中引入的方法我能够通过映射来获取传递给父组件的每个子组件的 DOM 节点this props children 但是 如果某些子项碰巧是 React Elements 而不是组件 例如
  • JQuery ul li 选择列表

    尝试使用 JQuery 使用 class next 和 class prev 例如滚动浏览 ul li 列表 ul class selectoption li Item 1 li li Item 2 li li Item 3 li li l
  • 如果 php 中满足条件,则删除 fgets() 之后的行

    我有一个非常大的文本文件 正在使用 fgets 逐行获取文件的内容 但如果满足某些条件 我需要从文件中删除一些文本 ex 你好世界上午字符串号1 你好世界上午字符串号 2 你好世界是字符串A 你好世界是字符串 B 假设字符串 1 满足条件
  • Xcode 9.0.1 及更高版本中存在 100 多个“在 MapKit 和 VectorKit 中实现的类”警告

    运行我的项目时 甚至不使用MapKit 我的控制台收到了一百多个类重复警告的垃圾邮件 objc 6377 类 MKPlaceBusinessInfoItemAccessibility super 在 Applications Xcode a
  • Webscraping,read_html() - open.connection(x, "rb") 中的错误:SSL 证书问题:证书已过期

    我目前正在尝试构建一个小型网络爬虫 我正在使用以下代码来抓取网站 webpage lt https www whisky de shop Schottland Single Malt Macallan Triple Cask 15 Jahr
  • 刚体物理旋转

    我想在 Java 中创建一个物理引擎 然而 这不是我担心的代码 这只是刚体物理学的数学 特别是力以及它们如何影响物体的旋转 举例来说 我有一个边长相同的正方形 由于重力 无空气阻力 正方形将加速向地面移动 这意味着正方形中的每个点都会有 0
  • 获取 BlackBerry 10 日志的最佳方式?

    与 iOS 和 Android 相比 BlackBerry 10 拥有相当复杂的日志系统 我发现的唯一解决方案是使用javaloader像这样的工具 javaloader exe u eventlog gt eventlog txt 但它似
  • Spring Boot 和 Spring Data JPA 的批量插入不起作用

    我知道关于这个论点有很多类似的问题 但我确实需要一个可行的解决方案 我正在尝试配置 Spring Boot 和 Spring Data JPA 以便批量插入 目标是 提交每条 N 条记录 并不是每条记录在制作时repository save
  • 增加 cloudformation 自动缩放组中的根设备大小

    我正在尝试通过 cloudformation AutoScaling LaunchConfiguration 增加 ebs 支持的 ec2 实例上的硬盘空间 最初根设备以 8GB 开始 我想将其增加到 40GB 我觉得我可以基于此做到这一点
  • 如何检查线程是否执行完毕

    我有以下问题 我想检查 C 线程是否已完成执行 即线程方法是否已返回 我现在要做的就是打电话Thread Join 1 但这会产生 1 毫秒的延迟 有没有什么方法可以简单地检查线程是否已完成 检验Thread ThreadState只是看起
  • 使用 Swift 3 的 DynamoDB 中的保留关键字 ExpressionAttributeValues

    我能够在没有 status 接受表达式属性值的情况下获得响应 但是有了它 当我在projectionExpression 行中使用 status 时 我收到以下错误 状态是 DynamoDB 中的保留字 因此我必须添加主题标签有每https