2016-12-16 9 views
0

tcp-pingを使用してサーバーにpingを実行してから、requestライブラリ経由でデータベースにデータをPOSTするコールバック関数を作成します。私は、コールバックを取得して第2の関数にデータを送信する方法を調べるのに問題があります。Node.jsの2番目の関数にコールバックデータを渡すにはどうすればよいですか?

問題は、エラーはありませんが、Min、Max、およびAvgのフォームデータはmongodbに記録されていません。データを取得する方法やデータが送信されているかどうかはわかりません。

tcpp.ping({ address: 'www.google.com' }, function(err, data) { 

    postPingData(function(err, data){ 
     if(err){ 
     console.log(500, { error: 'something blew up' }); 
     } else { 
     console.log(data); // I understand this is incorrect, but I don't know how else I'm supposed to send data. 
     } 
    }); 

    console.log(data); 
}); 

var postPingData = function(callback){ 
    console.log(callback); 
    request.post({ 
     headers: {'content-type' : 'application/x-www-form-urlencoded'}, 
     url:  'http://localhost:8080/api/pingdata', 
     form: { 
        ping_id: "5852fd1976ba7111cd9b78aa", 
        min: callback.min, 
        max: callback.max, 
        avg: callback.avg 
       } 
    }, function(error, response, body){ 

    if (!error && response.statusCode == 200) { 
     status = "succeeded"; 
     callback(null, {status : status}); 
    } else { 
     callback(error); 
    } 
    }) 
}; 

答えて

0

基本的に、あなたがtcpp.pingにコールバックに渡されるデータ引数注入したいと思うようだ - 成功した場合のping操作の結果になります - あなたのpostPingData関数に:

tcpp.ping({ address: 'www.google.com' }, function(err, data) { 

    postPingData(data, function(err, data){ 

    ... 

var postPingData = function(data, callback){ 

    ... 

    form: { 
      ping_id: "5852fd1976ba7111cd9b78aa", 
      min: data.min, 
      max: data.max, 
      avg: data.avg 
      } 
関連する問題