如何将HTTP响应传递给Node.js中的回调?

时间:2012-02-15 03:41:57

标签: node.js

从Node查询数据库时,如何将HTTP响应对象传递给异步回调?例如(db stuff是伪代码):

var http = require('http');
http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  // read from database:
  var dbClient = createClient(myCredentials);
  var myQuery = 'my query goes here';
  dbClient.query(myQuery, callback);

  function callback(error, results, response) // Pass 'response' to the callback?
  {
    if (error === null) {
      for (var index in results) response.write(index); // Error
      response.end('End of data');
    }
    else {
      response.end('Error querying database.')
    }
  }
}).listen(1337, "127.0.0.1");

response传递给回调时,Node会给出一个错误,即结果延续对象没有方法write

这里最好的策略是什么?

2 个答案:

答案 0 :(得分:3)

通过在回调函数声明中添加响应,您将创建一个新的空响应对象,该对象仅在回调函数中具有作用域。

相反,您需要做的就是删除响应参数。

 function callback(error, results) // response is outside of function

在此回调函数中,变量响应现在将引用createServer回调的原始响应变量。由于此函数位于createServer回调内,因此它可以访问响应对象。

答案 1 :(得分:-3)

使用repsonse.send(index)

基本上,您只能打印响应对象以查看其中的功能。

console.log(response)