Невозможно удалить элемент из таблицы DynamodB - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть эта функция, которая добавляет элемент в таблицу DynamodB. В случае успеха он должен удалить этот же элемент из другой таблицы. У меня к этому прикреплен триггер API-шлюза. Когда я проверяю почтальона. Я получаю следующую ошибку. «Предоставленный ключевой элемент не соответствует схеме».

Ключи раздела:

Первая таблица: Ключ раздела: Ключ сортировки CandidatEmail: Тип

Вторая Таблица: Ключ раздела : Сортировка даты: Тип

// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
// Set credentials
AWS.config.loadFromPath('./credentials.json');
// // set dynamodb object
var dynamo = new AWS.DynamoDB({region: 'us-east-1',});

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

    function getTableName(counselor) {
        if(counselor == "Avery Rosser") {
            return "Licensed_Level"
        }
        else if (counselor == "Keshara Rosser") {
            return "Masters_Level"
        }
    }

  const done = (err, res) => callback(null, {
        statusCode: err ? '400' : '200',
        body: err ? err.message : JSON.stringify(res),
        headers: {
            "Access-Control-Allow-Origin": "*",
             "Access-Control-Allow-Credentials" : false
        }

    });

    const body = JSON.parse(event.body);

    var params = {
      TableName: "Appointment",
      Item: {}
    }

    var deleteParams = {
      TableName: getTableName(body.counselor), 
       Key: { 
           "Date": {S: body.date}
        }
    };

    var appointment = {
        "CandidateEmail": {S: body.candidateEmail},
        "Date": {S: body.date},
        "Name": {S: body.name},
        "Duration": {S: body.duration},
        "Price": {S: body.price},
        "Location": {S: body.location},
        "Counselor": {S: body.counselor},
        "CandidateFirstName": {S: body.candidateFirstName},
        "CandidateLastName": {S: body.candidateLastName},
        "Type": {S: body.type},
    }

    params.Item = appointment;

    dynamo.putItem(params, function(err, data) {
        if(err) {
            console.log("error in put item", err)
        }
        else {
            dynamo.deleteItem(deleteParams, done)
        }
    });

};
...