nodejsサーバにJSONリクエストを1つずつ送信します。 6回目のリクエスト後、サーバはすぐにクライアントに返信することができず、少し時間がかかります(15秒以上、もう一度私に返信してください)。MongoDBへの書き込みJson値が発生し、時刻は重要です。私はREST呼び出しに関して言います。この場合、どのようにエラーを見つけることができますか? (ツールやスクリプトコードは私を助けることができますか?)私のサーバー側のコードはそうですHTTPリクエストがNodejsサーバですぐに応答を送信できない
var controlPathDatabaseSave = "/save";
app.use('/', function(req, res) {
console.log("req body app use", req.body);
var str= req.path;
if(str.localeCompare(controlPathDatabaseSave) == 0)
{
console.log("controlPathDatabaseSave");
mongoDbHandleSave(req.body);
res.setHeader('Content-Type', 'application/json');
res.write('Message taken: \n');
res.write('Everything all right with database saving');
res.send("OK");
console.log("response body", res.body);
}
});以下のように
私のクライアント側のコード:
function saveDatabaseData()
{
console.log("saveDatabaseData");
var oReq = new XMLHttpRequest();
oReq.open("POST", "http://192.168.80.143:2800/save", true);
oReq.setRequestHeader("Content-type", "application/json;charset=UTF-8");
oReq.onreadystatechange = function() {//Call a function when the state changes.
if(oReq.readyState == 4 && oReq.status == 200) {
console.log("http responseText", oReq.responseText);
}
}
oReq.send(JSON.stringify({links: links, nodes: nodes}));
}
保存--Mongodbコード
function mongoDbHandleSave(reqParam){
//Connect to the db
MongoClient.connect(MongoDBURL, function(err, db)
{
if(!err)
{
console.log("We are connected in accordance with saving");
} else
{
return console.dir(err);
}
/*
db.createCollection('user', {strict:true}, function(err, collection) {
if(err)
return console.dir(err);
});
*/
var collection = db.collection('user');
//when saving into database only use req.body. Skip JSON.stringify() function
var doc = reqParam;
collection.update(doc, doc, {upsert:true});
});
}
あなたはGoogle Chromeの開発者エディタで私のREST呼び出しを見ることができます。
--Client出力(第6のコールは200 OK。最後の1が保留状態になっている)
--server出力
事前に感謝、
サーバーの出力とクライアントのjavascriptコンソールの出力を貼り付けることはできますか?尊重して、あなたのコードをきれいにすることができますが、バグがどこから来ているのかを見つけるのを助けるかもしれません... **編集:**また 'mongoDbHandleSave'関数を含めてください。データベース資格情報が含まれている場合は、資格情報を変数に置き換えます。 –
@FissureKingあなたの希望に応じて質問を更新しました。 – zoint
私の推測では、あなたの 'ServerResponse'は終了していないということです。 'application/json'の値を持つ' Content-Type'ヘッダーを設定してプレーンテキストを送信することを除いては、あなたのルートにある 'mongoDbHandleSave'の後ろにすべてコメントしてみて、 : 'res.status(200).end()'。 –