Обновление вложенной карты DynamoDb - PullRequest
0 голосов
/ 14 июля 2020

Немного поработав с DynamoDb, я столкнулся с проблемой, которая, судя по тому, что я читал, не совсем идеальна для DynamoDb. Поэтому, прежде чем я переключусь на RDS, я хотел бы посмотреть, смогу ли я как-нибудь достичь того, что мне нужно, с DynamoDb. Я также подумал о том, чтобы разбить это на несколько таблиц для DynamoDb

Ниже моей схемы данных. Внутри элемента находится список. Мне нужно добавить строки в список.

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

1 Ответ

0 голосов
/ 14 июля 2020

Да, это возможно.

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);
  }
});
...