【问题标题】:dynamodb.getItem returns {} when searching for a record that ends with IDdynamodb.getItem 在搜索以 ID 结尾的记录时返回 {}
【发布时间】:2020-10-07 20:07:13
【问题描述】:

我遇到了一个奇怪的问题,当我指定一个以 ID 结尾的参数时,dynamodb.getItem 返回 {}:

var AWS = require("aws-sdk");
AWS.config.update({ region: "ap-southeast-2" });
var dynamodb = new AWS.DynamoDB({ apiVersion: '2012-08-10' });

const tableName = "ReportingDB"
async function logReports() {
    try {
        var params = {
            Key: {
                "Category": { "S": "Certification" },
                "Report": { "S": "By EmployeeID" }
            },
            TableName: tableName
        };
        var result = await dynamodb.getItem(params).promise()
        console.log(JSON.stringify(result))
   } catch (error) {
    console.error(error);
}
}

当我将值“By EmployeeID”更改为“By Employee Number”时,它会起作用,为什么?

async function logReports() {
    try {
        var params = {
            Key: {
                "Category": { "S": "Certification" },
                "Report": { "S": "By Employee Number" }
            },
            TableName: tableName
        };
        var result = await dynamodb.getItem(params).promise()
        console.log(JSON.stringify(result))
   } catch (error) {
    console.error(error);
}
}

要重现,请创建一个包含 Category 和 Report 两列的 DynamoDB 表,然后分别添加一个具有“Certification”和“By EmployeeID/Number”值的项目。

DynamoDB 中的错误处理非常好,通常它会失败并显示错误消息,例如保留关键字(例如 Using a ProjectionExpression with reserved words with Boto3 in DynamoDB)但是使用“By EmployeeID”它不会产生任何错误,它只是不会返回任何事物。它可能是一个错误或我不知道的东西吗?我找不到它的文档。

PS 我已经使用 Web 控制台在 dynamo db 中插入了值。

【问题讨论】:

    标签: node.js amazon-web-services amazon-dynamodb


    【解决方案1】:

    documentation for GetItem 解释说:

    如果没有匹配项,GetItem 不返回任何数据,响应中也不会有 Item 元素。

    换句话说,如果没有与给定键匹配的项目,您将得到一个空结果 - 而不是错误消息。我怀疑这正是你的情况。

    我不知道为什么它没有找到带有“By EmployeeID”的项目。我认为这不是涉及字母“ID”的错误 :-) 我怀疑您只是在插入此项目的代码中存在错误,可能拼错了“By EmployeeID”一词。请再次查看插入此项目的代码,或使用 AWS DynamoDB UI(或发出Scan 请求)手动检查表的内容以查看其实际包含的内容。

    【讨论】:

    • 尽管我检查了三次,但扫描并复制粘贴该值是个好主意。这就是我没有解释我使用 Web 控制台插入值的原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2014-01-31
    相关资源
    最近更新 更多