Как узнать, существует ли конкретный emailID в DynamoDB или нет динамически? - PullRequest
0 голосов
/ 15 апреля 2019

Я использую узел js в лямбда-функции.Мне нужно сохранить некоторые детали в динамо-базе данных. При передаче значений мне нужно проверить, существует ли emailid в динамо-базе данных или нет. Если emailid уже существует, он должен вернуть ошибку ... Только если почтаИдентификатор отсутствует. Данные должны храниться в БД ... На данный момент я опубликую код, который я сделал, чтобы проверить, существует ли в БД emailID.

 const AWS = require('aws-sdk');
var docClient = new AWS.DynamoDB.DocumentClient();


var tableName = "Testing";

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

console.log(event)

let login = {
         TableName: 'Testing',
         Key: {'EmailID': 'abc@gmail.com'}
        };


docClient.get(login, function(err, data){
    if(err){
        console.log("error");
    }else{
        console.log("Succes");
   }

  if (typeof data.Item.EmailID === 'undefined') {
        // variable is undefined
        console.log("useridndefined");
        }
    else {
        console.log("Found and EmailID attribute: "+ data.Item.EmailID);

        }


});
}

Получаю ошибку:

 {
  "errorMessage": "RequestId: a3b80d66-c6ab-4de2-8bdc-195d1b0eafac Process exited before completing request"
}

{"errorMessage":"The provided key element does not match the schema","errorType":"ValidationException","stackTrace":["Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:48:27)","Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)","Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)","Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)","Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)","AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)","/var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10","Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)","Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:685:12)","Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)"]}

Пожалуйста, помогите мне сделать это. Только если emailID выходит из БД, он должен вернуть успех, в противном случае его нет

Моя схема:

CustomerName String : abc
EmailID      String : abc@gmail.com   
Password     String : abc
Name         String : abc

1 Ответ

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

Так как ваш первичный ключ - customerName, а sortKey - EmailID, вам нужно будет передать оба параметра во время вызова get.

let login = {
    TableName: 'Testing',
    Key: {
      'EmailID': 'abc@gmail.com',
      'CustomerName': name
    }
};

или вы можете передать только первичный ключ и запросить все электронные письма для customerName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...