首页 > 解决方案 > 检查表项是否不存在。如果为空,如何检查返回的“项目”数组?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.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");
                    }

}

标签: arraysamazon-web-servicesamazon-dynamodbis-empty

解决方案


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.


推荐阅读