Dynamo DB-Lambda函数不返回错误?

时间:2017-09-16 21:51:52

标签: amazon-dynamodb aws-lambda aws-sdk

我在发电机数据库表中有userName和className作为分区和排序键。插入重复记录时,我按预期在AWS Web控制台上收到错误。(状态代码:400;错误代码:ConditionalCheckFailedException;)。现在我尝试使用以下代码插入lambda函数的记录。它是第一次在独特的记录上如预期的那样正常工作。但是,当我试图插入相同的记录是不是应该给我同样的错误?作为回复,我没有收到错误。 什么错了?仅供参考..复制未插入的记录(至少这是按预期发生的)..

const AWS = require('aws-sdk');
// const dynamoDB = new AWS.DynamoDB({region: 'us-east-2', apiVersion: '2012-08-10'});
const docClient = new AWS.DynamoDB.DocumentClient({
    region: 'us-east-2',
    apiVersion: '2012-08-10'
});
exports.handler = (event, context, callback) => {
    var params = {
        Item: {
            userName: event.userName,
            className: event.className
        },
        ReturnValues: "ALL_OLD",
        TableName: "IRAT-COLLECTIONS"
    };
    docClient.put(params, function(err, data) {
        if (err) {
            console.log(err)
            callback(err);
        } else {
            console.log('data successfully written')
            console.log(data)
            callback(null, data);
        }
    })
};

1 个答案:

答案 0 :(得分:1)

PutItem上的文档很清楚,

http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html

创建新项目,或用新项目替换旧项目。如果指定表中已存在与新项目具有相同主键的项目,则新项目将完全替换现有项目。您可以执行条件放置操作(如果具有指定主键的新项目不存在,则添加新项目),或者如果现有项目具有某些属性值,则替换现有项目。您可以使用ReturnValues参数在同一操作中返回项目的属性值。