Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何检查dynamoDB中是否已经存在EmaiID?_Amazon Web Services_Aws Lambda_Amazon Dynamodb - Fatal编程技术网

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

Amazon web services 如何检查dynamoDB中是否已经存在EmaiID?,amazon-web-services,aws-lambda,amazon-dynamodb,Amazon Web Services,Aws Lambda,Amazon Dynamodb,Iam在lambda函数中使用节点js。当用户试图将某些数据放入dynamo数据库时,应检查数据库中是否存在emailID…只有当emailID不存在时,数据库中的数据才应更新…如果emailID存在,则应提示用户emilID已存在 下面是我用来将数据放入数据库的代码…但它不会检查emailID是否存在…我需要检查emailID是否存在于数据库中…只有在不存在的情况下才应更新数据…如何做请帮助我 enter code here var docClient = new AWS.DynamoDB.

Iam在lambda函数中使用节点js。当用户试图将某些数据放入dynamo数据库时,应检查数据库中是否存在emailID…只有当emailID不存在时,数据库中的数据才应更新…如果emailID存在,则应提示用户emilID已存在

下面是我用来将数据放入数据库的代码…但它不会检查emailID是否存在…我需要检查emailID是否存在于数据库中…只有在不存在的情况下才应更新数据…如何做请帮助我

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!!!")
   }
})
};
关键字条件表达式:

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


    });
    }

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


因此,将电子邮件id作为主键将解决您的问题。希望它对您有所帮助。向下滚动至“防止覆盖现有项目”部分标题。

从文档中“PutItem操作将使用相同的键(如果存在)覆盖项目。如果要避免这种情况,请使用条件表达式。”我添加了我的代码…出现错误,提供的键元素与架构不匹配…请帮助我