【问题标题】:How to check if the emaiID exists or not in the dynamodb?如何检查 emaiID 在 dynamodb 中是否存在?
【发布时间】:2019-04-24 08:54:26
【问题描述】:

我正在使用 node js 来实现 lambda 函数。我需要检查 dynamo db 中是否存在 emailID...如果 emailID 存在,它应该提示用户 emailid 已经存在,否则它应该将值存储在 dynamo db 中 ....

EmailID 是排序键 客户名是主键

我该怎么做..

下面是我的代码:

var doc = require('aws-sdk');
var dynamodb = new doc.DynamoDB()

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: { EmailID : "abc@gmail.com",
                   CustomerName : "ABC"},
            AttributeUpdates: {
                verified: {
                    Action: "PUT",
                    Value: true
                }
            }
        };

        // Update the user.
        dynamodb.update(params, function(err, data)
        {
            if (err)
            {
                console.log(JSON.stringify(err));
                context.fail(JSON.stringify(err));
                return;
            }
            context.succeed("User successfully updated.");
        });

putItem

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

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


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

   var tableName = "Testing";

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

【问题讨论】:

    标签: amazon-dynamodb


    【解决方案1】:

    为此,我将使用 Put 操作并使用“exists”参数。将其设置为 false 将确保如果项目已存在,则 put 操作将失败。当没有匹配时,put 将插入记录。

    有关如何在 javascript 中使用此操作的更多详细信息,请查看文档: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#putItem-property

    因此,在您的 put 示例中,您可以将以下内容添加到您的参数中:

    var AWS = require('aws-sdk');
    
    var docClient = new AWS.DynamoDB.DocumentClient();
    
    
    exports.handler = (event, context, callback) => {
        // TODO implement
    
        var tableName = "Testing";
    
        console.log(event.EmailID)
    
        var parms = {
            TableName: tableName,
            Item: {
                "EmailID": event.EmailID,
                "CustomerName": event.CustomerName,
                "PersonName": event.PersonName,
                "EmailSent": event.EmailSent,
                "Password": event.Password
            },
            ConditionExpression: "attribute_not_exists(EmailID)"
        };
        docClient.put(parms, function (err, data) {
            if (err) {
                callback(err)
            }
            else {
                callback(null, "Successfully updated data!!!")
            }
        })
    };
    

    【讨论】:

    • 你能帮我写代码吗...我试过了我无法...我很挣扎
    • 我在问题中添加了代码......此代码会将数据放入数据库......但我需要检查 emilID 是否已经存在......如果存在它应该提示用户 emailid 已经存在....如果 emailID 没有退出它应该把所有的细节放到数据库中
    • 收到错误消息:“一个或多个参数值无效:项目中缺少键 CustomerName”,请帮助我
    猜你喜欢
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2014-05-14
    • 2011-08-23
    相关资源
    最近更新 更多