2017-05-29 4 views
0

イムを置くが、私はここには私のサーバーに複数のHTTP PUTリクエストを送信しようとしている

var data1 = JSON.stringify(require('./abc.json')), 
    data2 = JSON.stringify(require('./abe.json')), 
    data3 = JSON.stringify(require('./abd.json')); 

var put_data = [data1,data2,data3]; 

async.each(put_data, function(data, callback){ 

    var post_options = { 
     hostname: config.serviceHost, 
     port : '80', 
     path : '/API/Nag', 
     method : 'PUT', 
     headers : { 
      'Content-Type': 'application/json', 
      'Authorization': config.secret 
     } 
    }; 

    post_req = http.request(post_options, function (res) { 
     console.log('STATUS: ' + res.statusCode); 
     console.log('HEADERS: ' + JSON.stringify(res.headers)); 
     res.setEncoding('utf8'); 
     res.on('data', function (chunk) { 
      console.log('Response: ', chunk); 
     }); 
     res.on('end', function() { 
      callback(); 
     }); 
    }); 

    post_req.on('error', function(e) { 
     console.log('problem with request: ' + e.message); 
    }); 
    post_req.write(data); //posting data 
    post_req.end(); 
}, function(err){ 
    console.log('All requests done!') 
}); 

をしないのです何それは3 HTTPを送信してもカントー私は、データベースへの1つのJSONを送信するために管理しますすべての3つの要求に同じデータが含まれています

+0

「すべて3つの要求には同じデータが含まれています」 - どのデータがそれですか?データ1?データ2?データ3?何か?ちなみに –

+0

は 'var put_data' ...' async.each(post_data'は質問の中のタイプミスですか、それともあなたの実際のコードですか? –

+0

@JaromandaXこれはタイプミスで、1回はデータ1になりますそれはデータ3となる時間です – frodo

答えて

0

変数post_reqにはグローバルスコープがあります。値post_reqの意味は、async.eachの機能の外でアクセスして変更することができます。

varの前にpost_reqを追加すると、可変範囲が非同期に制限され、各繰り返しで新しい変数が生成されます。

関連する問題