Проверьте, не существует ли элемент таблицы.Как проверить возвращенный массив «Items», если он пуст?Javascript / DynamoDB - PullRequest
1 голос
/ 21 июня 2019

Я пытаюсь проверить, существует ли элемент в базе данных 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.log(err, err.stack); // an error occurred
                     alert("This group doesnt exist.")
                }else{
                   // successful response console.log(data); 


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

}

1 Ответ

0 голосов
/ 21 июня 2019

Ответ 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.log(err, err.stack);
  } else if (data.Item) {
    console.log(JSON.stringify(data));
  } else {
    console.log('Success, but no item');
  }
});

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

...