我正在尝试查看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");
}
}
答案 0 :(得分:0)
getItem
响应不包含Items
,而是包含Item
(请参见documentation)。如果有带有给定键的项目,或者没有任何项目,它将返回一个项目。
您可以按以下方式检测到它:
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
。
答案 1 :(得分:0)
补充两点:
Item
用于 GetItem,Items
用于 Query。
AWS 文档还提到 ResourceNotFoundException
“用于尝试访问不存在的表或索引的操作”。为了避免混淆:
undefined