Как проверить, существует ли emaiID или нет в DynamodB? - PullRequest
0 голосов
/ 24 апреля 2019

Я использую узел JS для лямбда-функции.Мне нужно проверить, существует ли emailID в динамо-базе данных или нет ... Если emailID существует, он должен сообщить пользователю, что emailid уже существует, если нет, он должен хранить значения в динамо-базе данных ....

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

1 Ответ

0 голосов
/ 24 апреля 2019

Чтобы добиться этого, я бы использовал операцию Put и использовал параметр «существующие». Если установить значение false, то операция put завершится неудачей, если элемент уже существует. Если совпадения нет, команда put вставит запись.

Для более подробной информации о том, как использовать эту операцию в JavaScript, пожалуйста, ознакомьтесь с документацией: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#putItem-property

Итак, в вашем примере вы можете добавить следующее к своим параметрам:

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!!!")
        }
    })
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...