2015-05-01 62 views
0

我試圖將一些JSON數據發佈到RESTful API。但數據不會發布。我使用節點請求:https://github.com/request/request 和使用該頁面的代碼片段。 我的代碼片段:節點請求發佈數據

var async = require('async'); 
var request = require('request'); 

var options = { 
    url: 'http://abcd.dfgh.com/v2.0/observations', 
    method: 'POST', 
    headers: { 
     'x-api-key': '123456=', 
     'content-type': 'application/json' 
    } 
}; 

SensorTag.discover(function(sensorTag) { 
    function callback(error, response, postdata) { 
     console.log("HERE GOES POST DATA : " + postdata); 
     if (!error && response.statusCode == 200) { 
      var info = JSON.parse(postdata); 
      console.log(info.stargazers_count + " Stars"); 
      console.log(info.forks_count + " Forks"); 
     } 
    } 
    async.series([ 
     /*some functions*/ 
     function(callback) { 
      setTimeout(callback, 2000); 
      loop(); 
     } 
    ]) 
    function loop() { 
     async.series([ 
      /*Some functions*/ 
      function(callback) { 
       /*data etc...*/ 
       var postdata = "{ \"version\": \"1.0.1\", \"observations\": [ { \"sensor\": \"TISensorTag_temp_01\", \"record\": [ { \"starttime\": \"" + formatDate(new Date()) + "\", \"output\": [ { \"name\": \"ObjTemp\", \"value\": \"" + objtemp + "\" }, { \"name\": \"AmbTemp\", \"value\": \"" + ambtemp + "\" } ] } ] } ] }"; 
       request.post(options, callback); 
      } 

     ]) 
    } 
}) 

但數據沒有公佈,它不斷而不發佈數據循環。任何人都可以請澄清發生了什麼? 也是我發現的是request並沒有叫callback function,因爲這一部分,我不能看到:

console.log("HERE GOES POST DATA : "+postdata); 
+1

它似乎並不像你實際使用'postdata' –

+0

@ExplosionPills請回調函數 – Zim

回答

0

你實際上並沒有使用你的postdata變量。

嘗試將其管理至請求,例如

var req = request.pos(options, callback); 
req.end(postdata); // Writes data to the stream, and closes it 
0

您沒有使用postdata同時發送請求:

var postdata = "{ \"version\": \"1.0.1\", \"observations\": [ { \"sensor\": \"TISensorTag_temp_01\", \"record\": [ { \"starttime\": \"" + formatDate(new Date()) + "\", \"output\": [ { \"name\": \"ObjTemp\", \"value\": \"" + objtemp + "\" }, { \"name\": \"AmbTemp\", \"value\": \"" + ambtemp + "\" } ] } ] } ] }"; 
options.data = postdata; //added data to post request 
request.post(options, callback); 

關於回調,您已初始化回調,並在你的情況,你不必通過回調的函數參數。嘗試使用以下:

async.series([ 
    /*some functions*/ 
    function() { 
     setTimeout(callback, 2000); 
     loop(); 
    } 
]) 
+0

我嘗試這樣做,但後並沒有發生。 – Zim

+0

我必須爲POST響應設置另一個回調,這就是爲什麼我設置它 – Zim

+0

我試着用這個:http://blog.modulus.io/node.js-tutorial-how-to-use-request-module 它工作,但這不是優化的代碼,對於我需要寫很多次的許多函數。而這會優化。請讓我知道如何做到這一點 – Zim