Проверьте, не существует ли элемент таблицы. Как проверить возвращенный массив «Элементы», если он пуст? Javascript/DynamoDB

Я пытаюсь узнать, существует ли элемент в базе данных DynamoDB. Однако я не могу найти прямой ответ. Поэтому я использую операцию getItem().

Это возвращает JSON. В документации сказано, что возвращаемый элемент должен быть пустым, если элемент не найден в базе данных. Однако я не могу понять, как проверить, пусто ли это возвращаемое значение. Я пробовал варианты if (data == "undefined"){

//PutItem - DynamoDB table: check if group exists
                var dynamodb5 = new AWS.DynamoDB({ region: AWS.config.region });
                var identityId = AWS.config.credentials.identityId;
                var params = {
                      Key: {
                       "groupName": {
                         S: groupname
                        }
                      }, 
                      TableName: "group"
                     };
                dynamodb5.getItem(params, function(err, data) {
                if (err){
                    console.info(err, err.stack); // an error occurred
                     alert("This group doesnt exist.")
                }else{
                   // successful response console.info(data); 


                    if (data.Items[0] == "undefined"){
                        console.info("ITS WORKING");
                    }

}

data.Items.length === 0 не будет работать здесь?

Piekarski D 21.06.2019 17:52

К сожалению, я уже пробовал это. Однако, как указал jarmod, я использовал Items вместо просто Item. Возможно, это была моя проблема. length возвращался как undefined.

FlightHoldings 21.06.2019 19:45
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
2
3 344
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ответ getItem не включает Items, он включает Item (см. документация). Он вернет один элемент, если есть элемент с данным ключом или нет элемента.

Вы можете обнаружить это следующим образом:

const AWS = require('aws-sdk');

const ddb = new AWS.DynamoDB({ region: 'us-east-1' });

const params = {
  Key: {
    'groupName': {
      S: groupname,
    },
  },
  TableName: 'group',
};

ddb.getItem(params, (err, data) => {
  if (err) {
    console.info(err, err.stack);
  } else if (data.Item) {
    console.info(JSON.stringify(data));
  } else {
    console.info('Success, but no item');
  }
});

Небольшое замечание: теперь, когда у нас есть var и let, нет особых причин использовать const.

Две вещи, чтобы добавить:

Item для GetItem, Items для Query.

Также в документации AWS упоминается ResourceNotFoundException «для операции, которая пыталась получить доступ к несуществующей таблице или индексу». Чтобы избежать путаницы:

  • Получение несуществующего предмета вернет undefined на предмете
  • Попытка получить что-то из несуществующей таблицы или несуществующего индекса вызовет эту ошибку. Например, вы опечатались в имени таблицы или первичном индексе.

Другие вопросы по теме