从DynamoDB删除项目而不删除

时间:2018-08-08 13:25:51

标签: javascript node.js aws-lambda amazon-dynamodb serverless-framework

我一辈子都无法弄清楚为什么这实际上并没有从数据库中删除项目。它会成功返回,就好像它实际上删除了该项目,但实际上并没有执行删除操作。

我正在使用serverless框架在lambda中使用Javascript SDK

import * as dynamoDbLib from "./libs/dynamodb-lib";
import { success, failure } from "./libs/response-lib";
import { isEmpty } from 'lodash';

export function main(event, context, callback) {
  const params = {
    TableName: process.env.tableName,
    // 'Key' defines the partition key and sort key of the item to be removed
    // - 'tagId': path parameter
    Key: {
      tagId: event.pathParameters.id
    }
  };

  try {
    dynamoDbLib.call("delete", params).then((error) => {
      if(!isEmpty(error)){
        console.log(error)
        callback(null, failure({ status: false, error }));
      }else{
        callback(null, success({ status: 204 }));
      }
    });
  } catch (e) {
    console.log(e)
    callback(null, failure({ status: false }));
  }
}

dynamodb-lib文件如下

import AWS from "aws-sdk";

AWS.config.update({ region: "us-east-1" });

export function call(action, params) {
  const dynamoDb = new AWS.DynamoDB.DocumentClient();

  return dynamoDb[action](params).promise();
}

到目前为止,其他所有电话,putscan(列出所有电话)都可以正常工作,删除是迄今为止唯一没有做任何事情的电话

编辑:这是我的表结构

Resources:
  NametagsTable:
    Type: AWS::DynamoDB::Table
    Properties:
      # Generate a name based on the stage
      TableName: ${self:custom.stage}-nametags
      AttributeDefinitions:
        - AttributeName: tagId
          AttributeType: S
      KeySchema:
        - AttributeName: tagId
          KeyType: HASH
      # Set the capacity based on the stage
      ProvisionedThroughput:
        ReadCapacityUnits: ${self:custom.tableThroughput}
        WriteCapacityUnits: ${self:custom.tableThroughput}

这是serverless.yml

中的函数
delete:
    # Defines an HTTP API endpoint that calls the main function in delete.js
    # - path: url path is /tags/{id}
    # - method: DELETE request
    handler: delete.main
    events:
      - http:
          path: tags/{id}
          method: delete
          cors: true

0 个答案:

没有答案