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

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

最好的策略是什么?

最佳答案

通过将响应放入回调函数声明中,可以创建仅在回调函数中具有作用域的新的空响应对象。

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

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


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

关于node.js - 如何将HTTP响应传递给Node.js中的回调?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9287565/

10-15 09:40