Загрузка образцов данных в DynamoDB с помощью AWS SDK для JavaScript

#javascript #node.js #amazon-web-services #amazon-s3 #amazon-dynamodb

#javascript #node.js #amazon-веб-сервисы #amazon-s3 #amazon-dynamodb

Вопрос:

Я использую руководство от https://docs.amazonaws.cn/en_us/amazondynamodb/latest/developerguide/GettingStarted .NodeJs.02.html чтобы узнать, как загружать данные из json в таблицу DynamoDB. Однако я выполнил шаг 2, когда я запускаю свой код, только некоторые видеофайлы успешно помещаются в таблицу, а некоторые — нет. Для фильма, который не может быть добавлен, я получаю эту ошибку:

 Unable to add movie Meet Dave . Error JSON: {
  "message": "Requested resource not found",
  "code": "ResourceNotFoundException",
  "time": "2020-11-30T17:38:59.402Z",
  "requestId": "2D23NEFAB33E62C6PEFUFGGNM7VV4KQNSO5AEMVJF66Q9ASUAAJG",
  "statusCode": 400,
  "retryable": false,
  "retryDelay": 28.791430704572328
}
 

Каждый раз, когда я удаляю базу данных и пытаюсь повторно запустить свой код, успешно добавляются и безуспешно добавляются разные фильмы. Мой код идентичен шагу 2 руководства по ссылке выше.

 var allMovies = JSON.parse(fs.readFileSync("movie_data.json", "utf8"));
  allMovies.forEach(function (movie) {
    var movie_params = {
      TableName: "Movies",
      Item: {
        year: movie.year,
        title: movie.title,
        info: movie.info,
      },
    };

    docClient.put(movie_params, function (err, data) {
      if (err) {
        console.error(
          "Unable to add movie",
          movie.title,
          ". Error JSON:",
          JSON.stringify(err, null, 2)
        );
      } else {
        console.log("PutItem succeeded:", movie.title);
      }
    });
  });
 

Данные фильма представляют собой файл json, содержащий список фильмов с атрибутами: название, год и информация. У кого-нибудь есть какие-либо идеи, почему это работает неправильно, т.Е. Не все данные успешно помещаются в таблицу БД ?.

Комментарии:

1. попробуйте использовать эту переменную movie_params = { Имя_таблицы: «Фильмы», Элемент: { год: { S: movie.year}, название: {S: movie.title}, информация: {S: movie.info }, }, };

2. Я чувствую, что принимаю сумасшедшие таблетки — если мы создаем эти записи свежими, почему это docClient.put … разве это не должен быть метод create, а не put?

3. В любом случае, 400 — это плохой запрос, поэтому, если вы поставите точку отладки перед put вызовом API и пройдете каждую итерацию, мне было бы любопытно movie_params , как выглядит ваш объект каждый раз. Убедитесь, что каждый отправляемый объект правильно отформатирован и отсортирован одинаково каждый раз.

4. @Nonik это решение не сработало.

5. @JonathanBowman база данных уже создана в другой функции, это просто отдельная функция для заполнения БД данными из файла json