我在lambda函数中使用节点js。当用户尝试在dynamo数据库中放置一些数据时,应检查数据库中是否存在emailID ...仅当不存在emailID时,才应在数据库中更新数据...如果emailID存在,则应提示用户emilID已经存在...
下面是我用来将数据放入数据库中的代码...但是它不会检查emailID是否存在....我需要检查emilID是否存在db ...只有不存在的数据才应该更新 ...该如何帮助我
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!!!")
}
})
};
KeyconditionExpression:
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);
}
});
}
答案 0 :(得分:0)
您要寻找的是conditional expression。向下滚动到“防止覆盖现有项目”部分标题。
答案 1 :(得分:-1)
您可以将emailId设为dynamodb的主键,因为电子邮件ID将是唯一的,并且不会再次插入同一电子邮件的相同项,并且仅在电子邮件不同时才会更新
因此,将电子邮件ID作为主键即可解决您的问题。希望有帮助