$.post() を使用して AJAX 投稿要求を作成するために、フロントで jQuery を使用しています。また、返されたデータで何かを行う成功関数も渡します。私のnode.jsサーバーでは、エクスプレスを使用してリクエストを処理しています。ポストリクエストは、コールバックでres.send()を実行するコールバックを渡す別の関数を呼び出します。コールバックが完了するまでリクエストが終了しないようにするにはどうすればよいですか?
私のクライアント側のコードは次のとおりです。
$.post("/newgroup/", {name: newgroupname}, function(data) {
console.log(data); // Returns undefined because requests ends before res.send
});
私のサーバー側のコードは次のとおりです。
app.post('/newgroup/', function(req, res){
insertDocument({name:req.body.name, photos:[]}, db.groups, function(doc){
res.send(doc);
});
});
insertDocument 関数は次のとおりです。
function insertDocument(doc, targetCollection, callback) {
var cursor = targetCollection.find( {}, {_id: 1}).sort({_id: -1}).limit(1);
cursor.toArray(function(err, docs){
if (docs == false){
var seq = 1;
}
else {
var seq = docs[0]._id + 1;
}
doc._id = seq;
targetCollection.insert(doc);
callback(doc);
});
}