DynamoDBにユーザーの情報を格納し、DynamoDBテーブルに存在しない場合は同じユーザーにメールを送信する必要があります。私はforループでこれをやっています。リストには2つのレコードしか含まれていません。問題は、2番目のレコードだけがテーブルに挿入され、メールが同じユーザーに2回送信されることです。コードは次のとおりです。NodeJS:存在しない場合はdynamodbにレコードを挿入
module.exports.AddUser = function(req, res, usersList, departmentId) {
var _emailId = "";
var _userName = "";
var _departmentId = departmentId;
for (var i = 0; i < usersList.length; i++) {
_emailId = usersList[i].emailId;
_userName = usersList[i].userName;
var params = {
TableName: "UsersTable",
Key: {
"emailId": _emailId,
"departmentId": _departmentId
}
};
docClient.get(params, function(err, data) {
if (!err) {
if (!data.items)
AddUserAndSendEmail("UsersTable", _emailId, _userName);
//The above function is being called twice but for the same user.
//It has a check so not inserting the same record twice but
//sending two mails to the same user.
}
});
}
res.end("success");
}
function AddUserAndSendEmail(tableName, emailId, _userName) {
var params = {
TableName: tableName,
Item: {
"emailId": emailId,
"departmentId": 101//Default Department
}
};
docClient.put(params, function(err, data) {
if (!err) {
//Send Email Code Here
} else {
console.log("error");
}
});
}
この異常な動作の原因は何でしょうか?本当に不満、私はこれをあきらめようとしている。
他のエントリの電子メールIDは何ですか?これまでのコードは正しいはずです。 –
@HeadhunterXamdどちらも違います。検証済み。 – user1640256
'AddUserAndSendEmail'の背後にあるコードをチェック/表示することができますか?問題はその機能にある可能性があります。 –