2017-05-09 10 views
0

パートナーAPIのバックエンドを提供します。ここには、オブジェクトのセットとその情報が格納されます。 JSONの形式で1つのオブジェクトのapiリクエスト情報を取得できます。 私の問題は、すべてのオブジェクトのすべての情報を取得する方法です。 API呼び出しが、私はすべてのオブジェクトの1時間応答を取得する方法がわからない非同期に行われたようnodeJs内のオブジェクトのセットのデータを取得するためのapi呼び出し要求を行う方法

module.exports.getBackendData = function (request, response) { 
    var deviceid = request.params.id_device; 
    var id = request.params._id; 
    var points = []; 
    var optionsget = { 
     host: 'hostname', //here only the domain name 
     port: 443 
     , path: '/api/partner/' + id + '', //the rest of the url parameters if needed 
     method: 'GET', //do GET 
     auth: 'username:password' 
    }; 
    var myRequest = https.request(optionsget, function (myResponse) { 
     var myData = ''; 

     myResponse.on('data', function (d) { 
      myData += d; 
     }); 

     myResponse.on('end', function() { 
      str = JSON.parse(myData); 
      var lat, long, statut, timestamp; 
      for (var i = 0; i <= str.reports.length - 1; i++) { 
       lat = str.reports[i].latitude; 
       long = str.reports[i].longitude; 
       timestamp = str.reports[i].ts; 
       statut = str.reports[i].move; 

       locations.push({ 
        long: long 
        , latitude: lat 
        , move: statut 
        , timestamp: timestamp 
       }); 
      } 

      response.json(points); 
     }); 
    }); 
    myRequest.end(); 
    myRequest.on('error', function (e) { 
     console.error("error:", e); 
    }); 
} 

: 次のコードは、1つのオブジェクトの情報を取得するために構築されています。

答えて

0

これは古典的な「ノードの非同期性をループで処理する方法」です。

asyncまたはsteed、Promises、Async/Awaitのような図書館を見てください。 あなたの質問からこの権利を推測できれば、あなたの"list of objects IDs"が見つからない場合もあります。

おそらく、APIの最も実用的でフレンドリーな方法は、1つずつ行うことです。

私は、オブジェクトの私のリストは、このようなものです

const steed = require('steed')() 

const ids = [1, 2, 3] 

function makeHttpRequest (id, cb) { 
    // as in your example 
    return locations 
} 

steed.mapSeries(ids, function (id, cb) { 
    makeHttpRequest(id, cb) 
}, (err, result) => { 
    if (err) return console.log(err) 
    // result is an array of all the resutls of the single calls 
    console.log(result) 
}) 
+0

のために行くだろう:IDS = [{ "_id": "_ ID"、 "DEVID": "devid_value"}、... {}] – Blackhat

+0

これは多かれ少なかれ適用されます。ちょうど配列の値の代わりにIDを参照してください。 – eljefedelrodeodeljefe

関連する問題