Amazon web services 如何检查dynamoDB中是否已经存在EmaiID?
Iam在lambda函数中使用节点js。当用户试图将某些数据放入dynamo数据库时,应检查数据库中是否存在emailID…只有当emailID不存在时,数据库中的数据才应更新…如果emailID存在,则应提示用户emilID已存在 下面是我用来将数据放入数据库的代码…但它不会检查emailID是否存在…我需要检查emailID是否存在于数据库中…只有在不存在的情况下才应更新数据…如何做请帮助我Amazon web services 如何检查dynamoDB中是否已经存在EmaiID?,amazon-web-services,aws-lambda,amazon-dynamodb,Amazon Web Services,Aws Lambda,Amazon Dynamodb,Iam在lambda函数中使用节点js。当用户试图将某些数据放入dynamo数据库时,应检查数据库中是否存在emailID…只有当emailID不存在时,数据库中的数据才应更新…如果emailID存在,则应提示用户emilID已存在 下面是我用来将数据放入数据库的代码…但它不会检查emailID是否存在…我需要检查emailID是否存在于数据库中…只有在不存在的情况下才应更新数据…如何做请帮助我 enter code here var docClient = new AWS.DynamoDB.
enter code here
var docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = (event, context, callback) => {
// TODO implement
var tableName = "Test";
console.log(event.EmailID)
var parms = {
TableName : tableName,
Item : {
"EmailID" : event.EmailID,
"CustomerName" : event.CustomerName,
"PersonName" : event.PersonName,
"EmailSent" : event.EmailSent,
"Password" : event.Password
}
};
docClient.put(parms, function(err, data)
{
if (err){
callback(err)
}
else
{
callback(null,"Successfully updated data!!!")
}
})
};
关键字条件表达式:
const AWS = require('aws-sdk');
var doc
Client = new AWS.DynamoDB.DocumentClient();
var tableName = "Testing";
exports.handler = (event, context, callback) => {
var EmailID = event.EmailID; // or any other var which is having emaiID
console.log(event)
var params= {
TableName: 'Testing',
Key: {ConditionExpression: 'attribute_exists(event.EmailID)'
}
};
docClient.get(params, function(err, data){
if(err){
callback(err, data);
}else{
callback(err, data);
}
});
}
您可以将emailId设置为dynamodb的主键,因为emailId是唯一的,它不会再次插入同一电子邮件的相同项目,并且仅当电子邮件不同时才会更新
因此,将电子邮件id作为主键将解决您的问题。希望它对您有所帮助。向下滚动至“防止覆盖现有项目”部分标题。从文档中“PutItem操作将使用相同的键(如果存在)覆盖项目。如果要避免这种情况,请使用条件表达式。”我添加了我的代码…出现错误,提供的键元素与架构不匹配…请帮助我