【问题标题】:DynamoDB - putItem - Map with nested data types (NodeJS, aws-sdk)DynamoDB - putItem - 具有嵌套数据类型的映射(NodeJS,aws-sdk)
【发布时间】:2019-03-14 23:07:11
【问题描述】:

所有 - 我正在处理特定的业务需求,并且由于缺乏关于 Google 的信息,我想我会在这里停下来获取一些信息:

我基本上是在摄取 CSV,将其转换为 JSON 对象并将其填充到 Dynamo 中。有趣的是,行值的数据类型在字符串和数字之间跳转,但我无法让它正常工作。

我正在使用 Node 和 aws-sdk,并且确实使用了 Amazon Docs 来直接测试它,但它仍然无法正常工作,见下文:

var params = {
    TableName: foo,
    Item: {
        masterReportsUuid: uuidv4(),
        reportDate: _eventDate,
        "testAttribute": {
            "Name": {
                "S": "Joe"
            },
            "Age": {
                "N": "35"
            }
        },
    }
};



dbDocClient.put(params, (err, data) => {
    if (err) {
        //log to CloudWatch
        console.log(err);
        reject(err);
    } else {
        resolve(data);
    }
});

testAttribute 显然是一个包含名称和年龄、字符串和数字的 Map。这直接来自文档 -

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#putItem-property

Map 类型的属性。例如:

“M”:{“姓名”:{“S”:“乔”},“年龄”:{“N”:“35”}}

但这在 Dynamo 中的输出是这样的 -

Dynamo Output

所以我的问题是 - 为什么这不起作用?

编辑:错别字。

【问题讨论】:

    标签: node.js amazon-dynamodb aws-sdk


    【解决方案1】:

    呃 - 我解决了这个问题。我会把这个留在这里,以防有人遇到这个问题。

    两个问题 - 我使用的是 DynamoDB.DoucmentClient().put API 调用而不是 DynamoDB.putItem 调用,并且我的 params 对象关闭但不正确。请参阅下面的嵌套 Map AttributeTypes 的工作示例 -

    const dbDocClient = new aws.DynamoDB.DocumentClient();
    const dbDynamo = new aws.DynamoDB();
    
    var params = {
        TableName: _ReportsTable,
        Item: {
            testUuid: {
                "S": uuidv4()
            },
            testDate: {
                "S": _eventDate
            },
            testAttribute: {
                "M": {
                    "Name": {
                        "S": "Joe"
                    },
                    "Age": {
                        "N": "35"
                    }
                }
            },
        }
    };
    
    
    dbDynamo.putItem(params, (err, data) => {
        if (err) {
            //log to CloudWatch
            console.log(err);
            reject(err);
        } else {
            resolve(data);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2013-10-19
      • 2014-12-05
      • 2022-08-17
      相关资源
      最近更新 更多