如何检查dynamoDB中是否已经存在EmaiID?

时间:2019-04-22 06:56:58

标签: amazon-web-services aws-lambda amazon-dynamodb

我在lambda函数中使用节点js。当用户尝试在dynamo数据库中放置一些数据时,应检查数据库中是否存在emailID ...仅当不存在emailID时,才应在数据库中更新数据...如果emailID存在,则应提示用户emilID已经存在...

下面是我用来将数据放入数据库中的代码...但是它不会检查emailID是否存在....我需要检查emilID是否存在db ...只有不存在的数据才应该更新 ...该如何帮助我

enter code here

var docClient = new AWS.DynamoDB.DocumentClient();


exports.handler = (event, context, callback) => {
    // TODO implement

   var tableName = "Test";

    console.log(event.EmailID)

    var parms = {
        TableName : tableName,
       Item : {
            "EmailID" : event.EmailID,
            "CustomerName" : event.CustomerName,
            "PersonName" : event.PersonName,
            "EmailSent" : event.EmailSent,
             "Password" : event.Password
        }
    };
docClient.put(parms, function(err, data)
{
   if (err){
       callback(err)
   }
   else
   {
       callback(null,"Successfully updated data!!!")
   }
})
};

KeyconditionExpression:

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

Client = new AWS.DynamoDB.DocumentClient();


    var tableName = "Testing";

    exports.handler = (event, context, callback) => {



    var EmailID = event.EmailID; // or any other var which is having emaiID

       console.log(event)

    var params=  {
             TableName: 'Testing',

             Key: {ConditionExpression: 'attribute_exists(event.EmailID)'
                }
    };




    docClient.get(params, function(err, data){
        if(err){
            callback(err, data);
        }else{
            callback(err, data);
       }


    });
    }

2 个答案:

答案 0 :(得分:0)

您要寻找的是conditional expression。向下滚动到“防止覆盖现有项目”部分标题。

答案 1 :(得分:-1)

您可以将emailId设为dynamodb的主键,因为电子邮件ID将是唯一的,并且不会再次插入同一电子邮件的相同项,并且仅在电子邮件不同时才会更新

因此,将电子邮件ID作为主键即可解决您的问题。希望有帮助