node.js请求返回对象

时间:2015-02-27 10:19:32

标签: javascript node.js http request

这可能是一个愚蠢的问题,但我的目的是返回一个名为user的对象,然后我可以正确使用它。 http node.js文档中充满了console.log,但没有提到有关返回对象的内容。 这是我的代码(来自标准文档),我也尝试分配用户或在end方法中返回它,但它总是返回false。

var options= {
    host : 'localhost',
    port : 3000,
    path : '/users?userName=Rosella.OKon56', // the rest of the url with parameters if needed
    method : 'GET' // do GET
};


callback = function(response) {
  var str = ''; 

  //another chunk of data has been recieved, so append it to `str`
  response.on('data', function (chunk) {
    str += chunk;
  });
  //the whole response has been recieved, so we just print it out here
  response.on('end', function () {
    //console.log(str);

  });

}
var req = http.request(options, callback);
req.end();

1 个答案:

答案 0 :(得分:1)

返回一些可以解析为对象结构的东西。例如,如果您返回JSON,则可以使用JSON.parse来解析它。

  

我还尝试分配用户或在end方法中返回它,但它总是返回false

如果你想对解析后的结果做一些事情,你可以用end回调中的结果调用一个函数,如下所示:

callback = function(response) {
  var str = ''; 

  //another chunk of data has been recieved, so append it to `str`
  response.on('data', function (chunk) {
    str += chunk;
  });
  //the whole response has been recieved, so we just print it out here
  response.on('end', function () {
    doSomethingWithUserObject(JSON.parse(str));
  });
}

旁注:您的代码正在成为The Horror of Implicit Globals的牺牲品;你需要声明你的callback变量。您还依赖自动分号插入(在您的函数表达式后需要;,因为它不是声明),我不建议这样做,但有些人喜欢