我在发电机数据库表中有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);
}
})
};
答案 0 :(得分:1)
PutItem上的文档很清楚,
http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html
创建新项目,或用新项目替换旧项目。如果指定表中已存在与新项目具有相同主键的项目,则新项目将完全替换现有项目。您可以执行条件放置操作(如果具有指定主键的新项目不存在,则添加新项目),或者如果现有项目具有某些属性值,则替换现有项目。您可以使用ReturnValues参数在同一操作中返回项目的属性值。