#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