2012-02-15 38 views
2

从Node查询数据库时,如何将HTTP响应对象传递给aysynchronous回调?例如(分贝东西是伪代码):如何将HTTP响应传递给Node.js中的回调?

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到回调,节点给出的结果继续对象没有方法write错误。

这里最好的策略是什么?

回答

3

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

相反,您只需删除响应参数即可。

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

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

-3

使用repsonse.send(index)

基本上,你可以只打印response对象,看看有什么功能都在里面。

console.log(response)

相关问题