Как вставить новую переменную списка в существующий элемент таблицы DynamoDB, используя Javascript? - PullRequest
1 голос
/ 27 марта 2020

Я хотел бы добавить новый список строк ко всем элементам, которые у меня есть в существующей таблице DynamoDB. Следующее делает то, что я хочу для одного из элементов:

var ddb = new AWS.DynamoDB({ apiVersion: '2012-08-10' });
var params = {
  TableName: 'SampleTable',
  Key: {
    "Date": { S: "01.04.2020" },
    "TimeOfDay": { S: "morning" }
  },
  UpdateExpression: "SET ReferenceList = :rl",
  ExpressionAttributeValues: {
    ":rl": 
    {
      L: [
        { S: "string1" },
        { S: "string2" },
        { S: "string3" }
      ]
    }
  }
};
ddb.updateItem(params, function (err, data) {
  if (err) console.log(err);
  else console.log(data);
});

Тем не менее, я хотел бы передать переменную ExpressionAttributeValues ​​для списка, так как количество строк отличается для каждого элемента. Что-то вроде:

ExpressionAttributeValues: { ":rl": refList }

Однако я не могу понять, как определить refList. Я попробовал следующее:

var refList = `{ L: [ { S: "string1" }, { S: "string2" }, { S: "string3" ]}`;

, а также

var refList = AWS.DynamoDB.Converter.Marshall({list: ['string1', 'string2', 'string3']});

, но ни одна из этих попыток не сработала. Как создать объект списка, который обрабатывает Dynamo, и как передать его ExpressionAttributeValues?

1 Ответ

1 голос
/ 27 марта 2020

Я нашел кое-что, что работает, независимо от того, является ли это лучшим подходом, еще неизвестно.

Я изменил код на следующее:

const docClient = new AWS.DynamoDB.DocumentClient();
var refList = ["string1", "string2", "string3"];
var params = {
  TableName: 'SampleTable',
  Key: {
    "Date":  "01.04.2020" ,
    "TimeOfDay":  "morning" 
  },
  UpdateExpression: "SET ReferenceList = :rl",
  ExpressionAttributeValues: {
    ":rl": refList
  }
};
docClient.update(params, function (err, data) {
  if (err) console.log(err);
  else console.log(data);
});

Это, кажется, работает, и я мог видеть новый список, прикрепленный к этому элементу в моей таблице DynamoDB. Следующая ссылка была мне нужна, чтобы помочь с этим решением: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Js.03.html#GettingStarted. Js .03.03

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...