首页 > 解决方案 > 无法从 dynamodb 表中删除项目

问题描述

我有这个函数可以将一个项目添加到 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)
        }
    });

};

标签: node.jsaws-lambdaamazon-dynamodb

解决方案


推荐阅读