【问题标题】:Lambda + Nodejs + dynamodb : storing json : Why put item storing data types?Lambda + Nodejs + dynamodb : 存储 json : 为什么要放 item 存储数据类型?
【发布时间】:2017-08-27 15:50:01
【问题描述】:

我正在尝试使用下面给出的代码将 json 对象存储在 dynamodb 中。

exports.handler = function (event, context, callback) {

    var docClient = new AWS.DynamoDB.DocumentClient();

    var table = "Logs";

    id_val = 1
    var params = {
        TableName: table,
        Item: {
            "id": id_val,
            "message": event
        }
    };

    docClient.put(params, function(err, data) {
        if (err) {
            callback(null, JSON.stringify(err, null, 2));
            context.fail("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
        }
    });
}

事件输入

[
    {
        "id": 1,
        "demographic": {
            "firstName": "John",
            "middleName": "w",
            "lastName": "Doe",
            "suffix": "jr",
            "birthDate": "1990-02-02",
            "gender": "M",
            "ssn": 123
        }
    }
]

表中存储了什么

{
    "id": {
        "N": "84.20420287568176"
    },
    "message": {
        "L": [
            {
                "M": {
                    "demographic": {
                        "M": {
                            "birthDate": {
                                "S": "1990-02-02"    
       ...
       ...
       ...

为什么数据类型被存储在表中?如何分解这一点,以便单独存储属性?

【问题讨论】:

  • 您能否提供您的表架构以供参考?

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


【解决方案1】:

这就是dynamoDB存储数据的方式,因为当我们查看数据时,我们应该能够知道字段的数据类型,这与关系数据库中列的数据类型完全相同。虽然当我们通过实际应用程序或 API 从 dynamoDB 中获取数据时,数据在 dynamoDB 中存储和显示是这样的,但我们可以摆脱数据类型,这将只返回实际数据。

【讨论】:

  • 谢谢。但是,当我在 dynamo db 控制台中创建记录时,或者特别是在项目中使用诸如 firstName:John 之类的属性作为输入参数的一部分时,数据类型不会显示在控制台中,这是因为 put 命令现在知道数据类型之前。问题是,对于没有定义模式的输入对象,如何编写 put 命令以使每个项目在 db 中都是一个单独的属性?
  • 抱歉回复晚了,真的很忙 :) 。在 REST 世界中,客户端和服务之间总是会就数据的外观达成一致。如果您打算公开您的服务,那么理想情况下,您应该向您的客户提供他们应该发送的数据。请查看以下链接以获取示例 API 文档bocoup.com/blog/documenting-your-api
  • 感谢您的链接。没想到我从来没有感谢过你。我猜迟到总比没有好!
  • 没问题的哥们:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 2021-04-18
相关资源
最近更新 更多