返回顶部
首页 > 资讯 > 精选 >如何使用 AWS sdk 在 Go 中正确解组 PartiQL 查询的结果?
  • 315
分享到

如何使用 AWS sdk 在 Go 中正确解组 PartiQL 查询的结果?

2024-02-12 16:02:31 315人浏览 八月长安
摘要

问题内容 我的乐队即将演出的节目存储在 DynamoDB 中,并且我有以下代码: type PartiQLRunner struct { DynamoDbClient *dyn

问题内容

我的乐队即将演出的节目存储在 DynamoDB 中,并且我有以下代码:

type PartiQLRunner struct {
    DynamoDbClient *dynamodb.DynamoDB
    TableName      string
}

func BuildRunner() *PartiQLRunner {
    sess := session.Must(session.NewSessionWithOptions(session.Options{
        SharedConfigState: session.SharedConfigEnable,
    }))

    svc := dynamodb.New(sess)

    return &PartiQLRunner{
        DynamoDbClient: svc,
        TableName:      "SHOWS",
    }
}

type Show struct {
    PK      int    `dynamodbav:"PK"`
    DATE    string `dynamodbav:"DATE"`
    ADDRESS string `dynamodbav:"ADDRESS"`
    VENUE   string `dynamodbav:"VENUE"`
}

func (runner PartiQLRunner) GetShows() ([]Show, error) {
    var shows []Show
    response, err := runner.DynamoDbClient.ExecuteStatement(
        &dynamodb.ExecuteStatementInput{
            Statement: aws.String(fmt.Sprintf("SELECT * FROM \"%v\" WHERE PK = 1", runner.TableName)),
        })
    if err != nil {
        log.Printf("Couldn't get info. Here's why: %v\n", err)
    } else {
        err = attributevalue.UnmarshalListOfMaps(response.Items, &shows)
        if err != nil {
            log.Printf("Couldn't unmarshal response. Here's why: %v\n", err)
        }
    }
    return shows, err
}

但是,我在 UnmarshalListOfMaps() 中的 response.Items 参数中收到以下错误:

无法使用“response.Items”(类型[]map[string]*AttributeValue)作为类型[]map[string]types.AttributeValue

我对 Go 语法仍然有些陌生,我不确定我是否理解传入内容与预期内容之间的不匹配。任何帮助将不胜感激。

解决方法

似乎 UnmarshalListOfMaps 函数期望的内容与您提供的内容之间存在类型不匹配。该错误消息表明该函数需要 []map[string]types.AttributeValue 类型的参数,但 response.Items 的类型为 []map[string]*AttributeValue

解决方案是将 response.Items 转换为正确的类型或为您的切片使用正确的类型签名。

解决此问题的方法如下:

package main

import (
    "fmt"
    "log"

    "GitHub.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/service/dynamodb"
    "github.com/aws/aws-sdk-go-v2/service/dynamodb/attributevalue"
    "github.com/aws/aws-sdk-go-v2/service/dynamodb/types"
)

type Show struct {
    PK      int    `dynamodbav:"PK"`
    DATE    string `dynamodbav:"DATE"`
    ADDRESS string `dynamodbav:"ADDRESS"`
    VENUE   string `dynamodbav:"VENUE"`
}

type PartiQLRunner struct {
    DynamoDbClient *dynamodb.Client
    TableName      string
}

func (runner PartiQLRunner) GetShows() ([]*Show, error) {
    var shows []*Show

    response, err := runner.DynamoDbClient.ExecuteStatement(
        &dynamodb.ExecuteStatementInput{
            Statement: aws.String(fmt.Sprintf("SELECT * FROM \"%v\" WHERE PK = 1", runner.TableName)),
        })
    if err != nil {
        log.Printf("Couldn't get info. Here's why: %v\n", err)
        return shows, err
    }

    err = attributevalue.UnmarshalListOfMaps(response.Items, &shows)
    if err != nil {
        log.Printf("Couldn't unmarshal response. Here's why: %v\n", err)
        return shows, err
    }

    return shows, nil
}

// The main function is just for demonstration and may not be part of your code
func main() {
    // You will need to initialize your DynamoDbClient and TableName
    runner := PartiQLRunner{
        DynamoDbClient: ,
        TableName:      "YourTableName",
    }

    shows, err := runner.GetShows()
    if err != nil {
        log.Fatalf("Error retrieving shows: %v", err)
    }

    for _, show := range shows {
        fmt.Printf("Show Date: %s, Venue: %s, Address: %s\n", show.DATE, show.VENUE, show.ADDRESS)
    }
}

请确保您具有适当的 DynamoDB 客户端初始化逻辑(在 main 函数中注释掉)来建立与 DynamoDB 的连接。

所提供的代码现在可以正确地将响应解组为指向 Show 结构的指针片段。

以上就是如何使用 AWS sdk 在 Go 中正确解组 PartiQL 查询的结果?的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何使用 AWS sdk 在 Go 中正确解组 PartiQL 查询的结果?

本文链接: https://lsjlt.com/news/563852.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用 AWS sdk 在 Go 中正确解组 PartiQL 查询的结果?
    问题内容 我的乐队即将演出的节目存储在 DynamoDB 中,并且我有以下代码: type PartiQLRunner struct { DynamoDbClient *dyn...
    99+
    2024-02-12
  • 如何使用 KeyConditionExpression 和 v2 Go SDK 查询 AWS DynamoDb?
    问题内容 我在 dynamodb 中有一个使用以下命令创建的现有表 aws dynamodb create-table \ --region us-east-1 \ --tab...
    99+
    2024-02-08
  • 如何在Go语言中正确使用包
    如何在Go语言中正确使用包,需要具体代码示例 在Go语言中,包(package)是组织和管理代码的基本单元。正确使用包可以帮助我们更好地组织代码,提高代码的复用性和可维护性。本文将介绍...
    99+
    2024-03-12
    使用 导入 包管理 go语言 标准库
  • 如何正确处理使用 Mux 的 Go 的可选查询参数?
    本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《如何正确处理使用 Mux 的 Go 的可选查询参数?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~问题...
    99+
    2024-04-04
  • 如何在Java中正确的使用注解
    如何在Java中正确的使用注解?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。注解是jdk1.5新增的特性.大家都知道,jdk1.5在java的发展史上有着划时代的意义.而注...
    99+
    2023-05-31
    java 注解 ava
  • 如何使用 AWS Go SDK 仅更新 DynamoDB 中的单个字段
    问题内容 希望有人能够阐明我一直在努力解决的这个问题。 我在 dynamo 中有这个表,我们称之为 people ,在这个表中,我有 id 的属性作为我们的分区键、name、lastn...
    99+
    2024-02-06
  • 如何正确地在 Go 语言中使用空格
    Go 语言是一种简单、高效、并发性强的编程语言,它是由 Google 开发的一种开源语言。在 Go 语言中,空格的使用是非常重要的,它能够提高代码的可读性和易维护性。本文将介绍如何正确...
    99+
    2024-04-02
  • 如何在Spring项目中正确使用Go IDE的路径?
    Spring是一种非常流行的Java开发框架,它提供了丰富的功能和特性,使得开发人员可以快速地构建复杂的Web应用程序。当我们在Spring项目中使用Go IDE时,正确的路径配置是非常关键的。在本文中,我们将探讨如何在Spring项目中正...
    99+
    2023-10-06
    ide spring path
  • 如何在python中正确的使用goto
    今天就跟大家聊聊有关如何在python中正确的使用goto,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和...
    99+
    2023-06-07
  • 在Java中如何正确的使用TreeSet
    这期内容当中小编将会给大家带来有关在Java中如何正确的使用TreeSet,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。TreeSet简介TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。...
    99+
    2023-05-31
    java treeset ava
  • HashSet如何正确的在Java中使用
    HashSet如何正确的在Java中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。HashSet 简介HashSet 是一个没有重复元素的集合。它是由HashMap实现...
    99+
    2023-05-31
    java hashset hs
  • 如何在Go编程中正确使用数据类型?
    数据类型在Go语言中是非常重要的概念,因为它们定义了可以存储的数据种类以及在内存中如何表示这些数据。在编写代码时,正确地使用数据类型是编写高质量代码的关键。在本文中,我们将探讨如何在Go编程中正确使用数据类型。 一、基本数据类型 Go语言...
    99+
    2023-08-08
    编程算法 数据类型 开发技术
  • 在SQLite中如何限制查询结果的数量
    在SQLite中,可以使用LIMIT关键字来限制查询结果的数量。可以将LIMIT关键字放在查询语句的末尾,后面跟上要返回的行数。例如...
    99+
    2024-04-09
    SQLite
  • 如何在正确的在JAVA中使用正则表达式
    这篇文章给大家介绍如何在正确的在JAVA中使用正则表达式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。...
    99+
    2023-06-06
  • 当路径中的数据不存在时,如何使用 Go Firebase-Admin SDK 检测空结果
    知识点掌握了,还需要不断练习才能熟练运用。下面编程网给大家带来一个Golang开发实战,手把手教大家学习《当路径中的数据不存在时,如何使用 Go Firebase-Admin SDK 检测空结果》,...
    99+
    2024-04-04
  • 如何正确地在Go语言中使用跳转语句
    标题:如何正确地在Go语言中使用跳转语句 在Go语言中,跳转语句主要包括break、continue和goto。这些语句可以帮助我们在代码中控制流程,提高代码可读性和效率。然而,跳转语...
    99+
    2024-04-02
  • mongodb如何正确的在Spring boot中使用
    这篇文章给大家介绍mongodb如何正确的在Spring boot中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MongoDB是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的...
    99+
    2023-05-31
    springboot mongodb
  • 如何在PHP和Linux中正确使用数组和对象?
    PHP和Linux是目前最流行的编程语言和操作系统之一。在使用它们的过程中,数组和对象是必不可少的数据类型。它们可以帮助我们更好地组织和管理数据。但是,正确地使用数组和对象可能会有一定难度。在这篇文章中,我们将讨论如何在PHP和Linux中...
    99+
    2023-08-24
    linux 数组 对象
  • 如何在Go语言中正确使用不同的数据类型?
    Go语言是一门静态类型语言,所以在使用不同的数据类型时需要特别注意。本篇文章将介绍如何在Go语言中正确地使用不同的数据类型,以及如何避免常见的数据类型错误。 一、基本数据类型 Go语言中的基本数据类型包括整型、浮点型、布尔型和字符串类型。以...
    99+
    2023-08-18
    数据类型 面试 git
  • Go和npm:如何在项目中正确使用文件路径?
    在现代开发中,文件路径的使用已经成为了一个必不可少的部分。在使用Go和npm这两个流行的编程语言和包管理器时,正确使用文件路径也变得非常重要。本文将帮助你了解如何在项目中正确地使用文件路径。 Go和npm是两种非常流行的编程语言和包管理器。...
    99+
    2023-06-03
    npm path 文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作