我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何修复 Query dynamodb 请求的错误?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何修复 Query dynamodb 请求的错误?

php小编鱼仔为您呈现:如何修复Query dynamodb请求的错误?DynamoDB是亚马逊提供的一种高度可扩展的NoSQL数据库服务。在使用DynamoDB进行查询时,可能会遇到各种错误,影响系统的正常运行。要修复这些错误,首先需要仔细检查查询语句的正确性,并确保提供的参数和表结构匹配。另外,还可以通过增加Read Capacity来提高查询性能,使用合适的索引来优化查询速度。此外,了解并遵循DynamoDB的最佳实践,如合理使用批量操作和条件表达式等,也能有效避免查询错误。通过以上方法,您可以轻松修复和优化DynamoDB查询中的错误,提高系统的稳定性和性能。

问题内容

在 dynamodb 中,我有一个表,其中包含:

- email (primary key)
- password (attribute)
- rname (attribute)

我正在使用 aws go sdk v1 来实现仅使用数据库主键执行查询:

我要解组的结构是:

type item struct {
    email    string `json:"email"`
    password string `json:"password"`
    rname    string `json:"rname"`
}

和代码:

result, err := client.Query(&dynamodb.QueryInput{
        TableName: aws.String("accountsTable"),
        KeyConditions: map[string]*dynamodb.Condition{
            "email": {
                ComparisonOperator: aws.String("EQ"),
                AttributeValueList: []*dynamodb.AttributeValue{
                    {
                        S: aws.String(email),
                    },
                },
            },
        },
    })
    if err != nil {
        return false, err
    }

    item := []Item{}

    err = dynamodbattribute.UnmarshalListOfMaps(result.Items, &item)
    if err != nil {
        return false, err
    }

但是,我收到密钥无效的问题。我检查数据库中的密钥,它也与我打印到控制台的密钥相匹配。

不知道如何解决这个问题,因为我看到的示例似乎适用于他们的并且看起来相同。

任何解决此问题的帮助将不胜感激:)

解决方法

您需要将密码和 rname 的值设置为 omitempty,以便它不会设置为空值,因为它们不是键,它们不应包含在查询中,因为它会引发无效键异常:

type item struct {
    email    string `json:"email" dynamodbav:"email,omitempty"`
    password string `json:"password" dynamodbav:"password,omitempty"`
    rname    string `json:"rname" dynamodbav:"rname,omitempty"`
}

更新

我认为问题是由于您尝试将整个响应编组到单个命令中,但是,迭代对我有用。 (我不使用 go)。

package main
import (
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/dynamodb"
    "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute"

    "fmt"
)


func main() {

    // create session
    sess := session.must(session.newsessionwithoptions(session.options{
        sharedconfigstate: session.sharedconfigenable,
    }))

    // create dynamodb client with logging
    client := dynamodb.new(sess, aws.newconfig())


    type item struct {
        email    string `dynamodbav: "email"`
        password string `dynamodbav: "password,omitempty"`
        rname    string `dynamodbav: "rname,omitempty"`
    }

    result, err := client.query(&dynamodb.queryinput{
        tablename: aws.string("accountstable"),
        keyconditions: map[string]*dynamodb.condition{
            "email": {
                comparisonoperator: aws.string("eq"),
                attributevaluelist: []*dynamodb.attributevalue{
                    {
                        s: aws.string("[email protected]"),
                    },
                },
            },
        },
    })

    if err != nil {
        fmt.println("query api call failed:")
        fmt.println((err.error()))
    }



    for _, i := range result.items {
        
        item := item{}
        err = dynamodbattribute.unmarshalmap(i, &item)
    
        if err != nil {
            fmt.println("got error unmarshalling: %s", err)
        }
    
        fmt.println("email: ", item.email)
        fmt.println()
        
    }
}

此外,当您使用 email 的单个密钥时,这意味着最多有 1 个项目具有相同的电子邮件地址,这意味着您应该使用 getitem 而不是 query

package main

import (
    "fmt"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/dynamodb"
    "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute"
)

func main() {

    // Item to Get
    type Item struct {
        Email    string `dynamodbav: "email"`
        Password string `dynamodbav: "password,omitempty"`
        Rname    string `dynamodbav: "rname,omitempty"`
    }

    // Create Session
    sess := session.Must(session.NewSessionWithOptions(session.Options{
        SharedConfigState: session.SharedConfigEnable,
    }))

    // Create DynamoDB Client
    client := dynamodb.New(sess, aws.NewConfig())

    // Get Item
    result, err := client.GetItem(&dynamodb.GetItemInput{
        TableName: aws.String("accountsTable"),
        Key: map[string]*dynamodb.AttributeValue{
            "email": {
                S: aws.String("[email protected]"),
            },
        },
    })

    // Catch Error
    if err != nil {
        fmt.Println("GetItem API call failed:")
        fmt.Println((err.Error()))
    }

    item := Item{}

    // Unmarhsall
    err = dynamodbattribute.UnmarshalMap(result.Item, &item)

    if err != nil {
        panic(fmt.Sprintf("Failed to unmarshal Record, %v", err))
    }

    // If Item Returns Empty
    if item.Email == "" {
        fmt.Println("Could not find Item")
        return
    }

    // Print Result
    fmt.Println("Found item:")
    fmt.Println("Email:  ", item.Email)

}

以上就是如何修复 Query dynamodb 请求的错误?的详细内容,更多请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何修复 Query dynamodb 请求的错误?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何修复 Query dynamodb 请求的错误?

php小编鱼仔为您呈现:如何修复Query dynamodb请求的错误?DynamoDB是亚马逊提供的一种高度可扩展的NoSQL数据库服务。在使用DynamoDB进行查询时,可能会遇到各种错误,影响系统的正常运行。要修复这些错误,首先需要仔
如何修复 Query dynamodb 请求的错误?
2024-02-11

http400的错误请求怎么恢复

http400的错误请求恢复方法:1、重新加载页面;2、检查URL;3、清除浏览器缓存;4、检查请求参数;5、确认身份验证信息;6、使用其他网络连接;7、联系网站管理员。在互联网世界中,HTTP(超文本传输协议)是用于在客户端和服务器之间发
2023-07-10

thinkphp请求类型错误如何解决

今天小编给大家分享一下thinkphp请求类型错误如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,我们来了解一下
2023-07-05

PHP中如何处理HTTP请求错误?

在Web开发中,HTTP请求错误是时常会碰到的问题。可能是接口请求超时、参数传递错误、网络连接不正常等等。在PHP中,我们可以通过各种方法处理这些HTTP请求错误。下面就来具体探讨一下。一、使用try…catch语句使用try…catch语
PHP中如何处理HTTP请求错误?
2023-12-09

DNS_PROBE_FINISHED_NXDOMAIN错误如何修复

DNS_PROBE_FINISHED_NXDOMAIN是您尝试访问网站时随时可能在浏览器上显示的错误,本文主要介绍了3种解决方法,具有一定的参考价值,感兴趣的可以了解一下
2023-05-19

Win11 ntdll.dll错误如何修复

要修复Win11中的ntdll.dll错误,可以尝试以下方法:1. 更新操作系统:确保您的Win11操作系统是最新版本,以便获得最新的修复程序和安全补丁。2. 运行系统文件检查器(SFC):按下Win + X键,在弹出的菜单中选择“命令提示
2023-09-17

windows normal.dotm错误如何修复

本篇内容介绍了“windows normal.dotm错误如何修复”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!解决方法:1、首先打开电脑,
2023-07-01

COMException如何修复错误80040154

错误码80040154指的是类未注册错误。这通常是由于在运行时找不到所需的COM组件导致的。要修复错误80040154,可以尝试以下几种方法:1. 确保COM组件已正确安装并注册:使用命令提示符运行regsvr32命令来注册COM组件。例如
2023-09-27

如何排除PHP中的跨站请求伪造错误?

跨站请求伪造(CSRF)攻击是一种常见的网络攻击手段,在PHP中的应用程序中也不例外。它利用用户的登录状态进行攻击,通过构造伪造的请求来伪装成合法用户提交恶意请求,进而产生危害。本文将介绍如何在PHP应用中排除CSRF漏洞,包括具体的代码示
如何排除PHP中的跨站请求伪造错误?
2023-12-17

修复: 操作员拒绝 Windows 任务计划程序中的请求错误

对于系统管理员而言,任务计划软件是不可或缺的工具,能够帮助自动化任务和管理多个系统。Windows 任务计划程序完美地完成了这项工作,但最近许多人报告说操作员拒绝了请求错误。尽管已经有许多广泛的报告和涵盖,但该问题仍然在操作系统的所有迭代中
2023-08-02

Windows11备份错误如何修复

今天小编给大家分享一下Windows11备份错误如何修复的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-05-25

win7系统错误如何修复

要修复Win7系统错误,您可以尝试以下几种方法:1. 运行系统自带的错误检测和修复工具:在开始菜单中搜索"命令提示符",右键点击并选择"以管理员身份运行",然后输入sfc/scannow命令,系统会自动检测并修复系统文件错误。2. 清理系统
2023-10-23

如何修复iMessage激活错误

本指南将向您展示如何修复iMessage激活错误,Apple的iMessage等即时消息服务在促进无缝通信方面发挥着至关重要的作用。但是,有时您可能会遇到可怕的“ iMessage激活错误”。可能会出现错误消息,例如“等待激活”、“激活失败
2023-07-29

vue:axios请求本地json路径错误如何解决

这篇文章主要讲解了“vue:axios请求本地json路径错误如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue:axios请求本地json路径错误如何解决”吧!axios请求本地
2023-06-30

java请求php接口报403错误如何解决

本篇内容介绍了“java请求php接口报403错误如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!权限问题一个可能导致403错误的原因
2023-07-05

如何修复收到COMException错误的80040154

COMException错误码80040154表示指定的COM组件无法找到或无法加载。要修复这个错误,可以尝试以下几种方法:1. 重新注册COM组件:打开命令提示符,以管理员身份运行,然后使用命令regsvr32重新注册COM组件。例如,如
2023-09-27

如何修复 PHP 函数中的错误?

通过以下步骤可修复 php 函数错误:检查语法错误(包括括号、引号、分号和关键字)。启用错误报告(使用 error_reporting())。检查未定义变量(确保所有变量已正确定义)。检查函数调用(确保函数具有正确的参数和类型)。查看日志文
如何修复 PHP 函数中的错误?
2024-05-01

win11 0xc0000142错误如何修复

今天小编给大家分享一下win11 0xc0000142错误如何修复的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。win110
2023-01-06

windows 0xc0000005错误如何修复

本文小编为大家详细介绍“windows 0xc0000005错误如何修复”,内容详细,步骤清晰,细节处理妥当,希望这篇“windows 0xc0000005错误如何修复”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
2023-06-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录