Javascript 节点请求post数据

Javascript 节点请求post数据,javascript,node.js,Javascript,Node.js,我试图将一些JSON数据发布到RESTful API。但数据并未公布。我使用的节点请求来自: 并使用了该页面中的代码片段。 我的代码片段: var async = require('async'); var request = require('request'); var options = { url: 'http://abcd.dfgh.com/v2.0/observations', method: 'POST', headers: { 'x-ap

我试图将一些JSON数据发布到RESTful API。但数据并未公布。我使用的节点请求来自: 并使用了该页面中的代码片段。 我的代码片段:

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);
            }

        ])
    }
})
但数据并没有发布,它继续循环而没有发布数据。有人能澄清发生了什么事吗? 我还发现,
请求
没有调用
回调函数
,因为我看不到这一部分:

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

您实际上没有使用
postdata
变量

试着按要求配管,例如

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

发送请求时未使用
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();
    }
])

您似乎没有实际使用
postdata
@ExplosionPills请检查回调函数,我必须为POST响应设置另一个回调,这就是我设置它的原因。我尝试了以下方法:它起作用,但这不是优化的代码,对于许多函数,我需要多次编写。而这将优化。请让我知道怎么做