当前位置: 首页 > 知识库问答 >
问题:

DynamoDbbegins_withSwift 5问题

相威
2023-03-14

我一直在尝试使用begins_with选项从Dynamodb获取访问列表,但似乎无法理解为什么在Xcode/swift 5中运行时找不到结果。

我可以在节点工作台和AWS控制台上运行查询。我有相同的代码用于简单查询。

getUser()函数正在工作

   func getUser() {

       // 1) Configure the query
       let queryExpression = AWSDynamoDBQueryExpression()
        queryExpression.keyConditionExpression = "#UserID = :UserID AND #UserDataType = :UserDataType"
       queryExpression.expressionAttributeNames = [
           "#UserID": "UserID",
           "#UserDataType": "UserDataType"
       ]
       queryExpression.expressionAttributeValues = [
           ":UserID" : "1001",
           ":UserDataType" : "User"
       ]
       // 2) Make the query
       let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()
       dynamoDbObjectMapper.query(HiViz.self, expression: queryExpression) { (output: AWSDynamoDBPaginatedOutput?, error: Error?) in
           if error != nil {
               print("The request failed. Error: \(String(describing: error))")
           }
           if output != nil {
               for books in output!.items {
                   let booksItem = books as? HiViz
                print("\(booksItem!.Visitorid!)")
               }
           }
       }
    }

queryHiVizTable包含begins\u with,我看不出如何解决不返回结果的问题。

   func queryHiVizTable() {

       // 1) Configure the query
       let queryExpression = AWSDynamoDBQueryExpression()
queryExpression.keyConditionExpression = "#UserID = :UserID AND begins_with(#UserDataType, :UserDataType)"

        queryExpression.expressionAttributeNames = [
           "#UserID": "UserID",
           "#UserDataType": "UserDataType"
       ]

       queryExpression.expressionAttributeValues = [
           ":UserID" : "1001",
           ":UserDataType" : "V)"
       ]

       // 2) Make the query
       let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()
       dynamoDbObjectMapper.query(HiViz.self, expression: queryExpression) { (output: AWSDynamoDBPaginatedOutput?, error: Error?) in
        print(queryExpression)
        if error != nil {
               print("The request failed. Error: \(String(describing: error))")
           }
           if output != nil {
                for books in output!.items {
                                 let booksItem = books as? HiViz
                    print("\(booksItem!.Visitorid!)")
               }
           }
       }
    }

新到aws所以感谢帮助。

谢谢

戴夫

共有1个答案

洪胜涝
2023-03-14

(仅供参考Swift 5 Xcode 11.5)

事实证明,在今天上午发布这个问题之前,我昨天做了所有的测试之后,我很快就可以得到正确的代码了。

在下面的代码中,我在userdatatype中有一个带有a)的错字,这破坏了begins_with。应该只有V而不是v)

queryExpression.expressionAttributeValues = [
           ":UserID" : "1001",
           ":UserDataType" : "V)"
       ]

然后,1001的数据返回了不同的错误

无法识别的选择器发送到实例

这是由于DB中一行的数据是json。

当我使用不同的用户ID进行测试时,它正在按预期工作。

如果您使用我下面的工作代码作为示例,同时遵循链接中的AWS指南,您应该可以让begins_with工作。

https://docs.aws.amazon.com/aws-mobile/latest/developerguide/how-to-nosql-integrate-an-existing-table.html

 func queryHiVizTable() {

           // 1) Configure the query
           let queryExpression = AWSDynamoDBQueryExpression()
    queryExpression.keyConditionExpression = "#UserID = :UserID AND begins_with(#UserDataType, :UserDataType)"
            queryExpression.expressionAttributeNames = [
               "#UserID": "UserID",
               "#UserDataType": "UserDataType"
           ]
           queryExpression.expressionAttributeValues = [
               ":UserID" : "1001",
               ":UserDataType" : "V"
           ]
           // 2) Make the query
           let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()
           dynamoDbObjectMapper.query(HiViz.self, expression: queryExpression) { (output: AWSDynamoDBPaginatedOutput?, error: Error?) in
            print(queryExpression)
            if error != nil {
                   print("The request failed. Error: \(String(describing: error))")
               }
               if output != nil {
                    for books in output!.items {
                                     let booksItem = books as? HiViz
                        print("---utututut---\(booksItem!.VisitorID!)")
                   }
               }
           }
        }
 类似资料:
  • 问题内容: 包括: all Spring libs, Apache Tomcat 7.0 library 在构建路径中 但它仍然给出错误: 在“ org.sprintframework.web-3.1.0.M1.jar”中,我可以看到“ org.springframework.web.context.ContextLoaderListener”。 Google上的某个人说应该包含spring.ja

  • 问题内容: 我使用非常简单的代码返回XML 但是,出现以下错误 请帮忙。谢谢 问题答案: 运行时出现NoSuchMethodError表示你使用的库版本与生成代码所针对的版本不同。 在你的情况下,Spring是元凶。在运行时检查类路径上的内容,并确保以下各项: 版本与编译时间罐相同 如果存在多个版本,请删除不需要的版本

  • 问题内容: 我不明白注释和之间的实际区别是什么? 扩展名还是它们具有完全不同的含义?什么时候应该使用它们?在服务层中使用Spring ,在DAO 中使用javax? 谢谢回答。 问题答案: 几年前,Spring定义了自己的Transactional注释以使Spring bean方法具有事务性。 Java EE 7终于做了同样的事情,现在除了EJB方法外,还允许CDI bean方法是事务性的。因此,

  • 我在CentOS虚拟机中安装了RabbitMQ,该虚拟机的网络适配器被定义为Bridge。我正在尝试配置RabbitMQ管理,以便通过机器的IP地址访问WebApp。配置如下:

  • 这个FAQ的最新版本总是可以从Apache主站点得到,位于<http://httpd.apache.org/docs/2.2/faq/> 如果你的问题在这里没有找到答案,你也可以看看Apache 1.3 FAQ ,看你的问题是否在那里有了答案。 主题 背景 关于 Apache HTTP Server 的背景知识。 支持 我遇到问题该怎么办? 错误信息 这些错误信息是什么意思? 背景 什么是Apac

  • 发布问题 更新问题 设置问题悬赏 获取问题列表 获取一个问题详情 删除一个问题 获取用户发布的问题列表 发布问题 POST /questions 输入 字段 类型 描述 subject 字符串 必须,问题主题或者说标题,不能超过 255 字节 ,必须以 ? 结尾。(不区分全角或者半角) topics 数组 必须,绑定的话题,数组子节点必须符合 { "id": 1 } 的格式。 body 字符串

  • 问题内容: 我简直不敢相信我网站上正在发生的事情。当我添加此行时: 一切正常。如果我不这样做,CSS就会“混乱”,一切都会变得不同,布局也会变得“丑陋”。 这条线如何解决所有问题? 问题答案: 您正在将HTML与XHTML混合使用。 通常,声明用于区分HTMLish语言的版本(在这种情况下为HTML或XHTML)。 不同的标记语言将表现不同。我最喜欢的例子是。在浏览器中查看以下内容: XHTML

  • 我试图在fabric rocket chat上联系,但没有得到太多帮助,因此在SO上发布了它。我有以下疑问: 我们是否可以在链码内访问块高度(我知道这在客户端是可行的,但在链码内是否可能) 可以从链码中的正在进行的事务调用新事务吗? 想知道hyperledger Fabric中存储的数据的历史记录在哪里 我们可以根据链码中的transactionid进行查询吗? 在fabric链码中编写调度程序是