以下は、まだ存在しない場合は基本的にデータをセッションに保存し、空の JSON を返し、それ以外の場合はそのメールに対応して保存されたセッション データを送信する API です。
app.use('/session', function(req, res) {
if (req.body.email in req.session) {
console.log("user data already available");
res.send(req.session[req.body.email]);
} else {
req.session[req.body.email] = {};
req.session[req.body.email]["email"] = req.body.email;
req.session[req.body.email]["gender"] = req.body.gender;
req.session[req.body.email]["dbname"] = req.body.dbname;
console.log("user session stored");
res.send({});
}
});
以下は、アプリケーションから作成している ajax 呼び出しです。これはクロスドメイン呼び出しであり、それに応じて応答ヘッダーを設定しました。
$.ajax({
url: 'url/session',
type: "POST",
crossOrigin: true,
data: {
"email": "email",
"gender": "all",
"dbname": "dbname"
},
success: function(data) {
console.log("inside session api call success");
console.log(data)
}
});
});
問題は、postman を使用して API をヒットすると正常に動作することですが、アプリケーションでそれを使用すると、毎回セッションが上書きされ、空の json が返されます。私は何を間違っていますか?
編集: ajax 呼び出しが発生するたびに、すべてのメール ids.session の過去のセッション データが削除されることがわかりました。