检查 table 项是否不存在。如果返回的 'Items' 数组为空,如何检查? Javascript/DynamoDB

Check if a table item doesn't exist. How to check returned 'Items' array if empty? Javascript/DynamoDB

我正在尝试查看某个项目是否存在于 DynamoDB 数据库中。但是我找不到直接的答案。所以我正在使用 getItem() 操作。

这个returns一个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");
                    }

}

getItem 响应不包括 Items,它包括 Item(请参阅 documentation)。它将 return 一个项目,如果有一个项目具有给定的键,或者没有项目。

你可以这样检测:

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');
  }
});

小提示:现在我们有 letconst.

,几乎没有理由使用 var

要补充两点:

Item 用于 GetItem,Items 用于查询。

AWS 文档还提到 ResourceNotFoundException“对于试图访问不存在的 table 或索引的操作”。为避免混淆:

  • 获得一个不存在的物品 return undefined 物品
  • 尝试从不存在的 table 或不存在的索引中获取某些内容将导致该错误。例如,您输入了错误的 table 名称或主索引。