【问题标题】:DynamoDb Nested Map UpdateDynamoDb 嵌套地图更新
【发布时间】:2020-07-14 22:15:08
【问题描述】:

在对 DynamoDb 进行了一些研究之后,我遇到了一个问题,从我目前所读到的内容来看,这对于 DynamoDb 来说并不理想。因此,在我切换到 RDS 之前,我想看看是否有任何方法可以通过 DynamoDb 实现我所需要的。我还考虑过将其分解为 DynamoDb 的多个表

在我的数据架构下方。项目内嵌套了一个列表。我需要能够将字符串附加到列表中。

{
    “server-id”: “123345678”,
    “server-name”: “my-server”
    “topics”: [
        {
            “name”: “my-topic”,
            “subscribers”: [] //This is what I need to append
        }
     ]
}

【问题讨论】:

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


    【解决方案1】:

    是的,这是可能的。

    var AWS = require('aws-sdk');
    AWS.config.update({region: 'us-east-1'});
    var ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
    
    var params = {
      ExpressionAttributeNames: {
       "#T": "topics", 
       "#S": "subscribers"
      }, 
      ExpressionAttributeValues: {
        ":vals": {
          L: [
            { N: "123" },
            { N: "456" }
          ]
        }
      }, 
      Key: {
       'server-id': { S: '123345678' }
      }, 
      ReturnValues: "ALL_NEW", 
      TableName: 'dummy-table',
      UpdateExpression: "SET #T[0].#S = list_append(#T[0].#S, :vals)"
     };
    
    ddb.updateItem(params, function(err, data) {
      if (err) {
        console.log("Error", err);
      } else {
        console.log("Success", data);
      }
    });
    

    【讨论】:

    • 当我使用以下内容并更改我的变量时,我收到错误“ValidationException:提供的表达式引用了该项目中不存在的属性”。我仔细检查了拼写等,一切都匹配。我错过了一些东西......希望错误告诉我缺少哪些属性。仅供参考,列表在那里,但它们是空的
    • 我发现了我的问题,没关系。感谢您的帮助!
    • 如何添加条件以便将订阅者添加到 topic = my-server?确保主题名称等于?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2021-07-22
    相关资源
    最近更新 更多