如何将HTTP响应传递给Node.js中的回调?
问题描述:
从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
错误。
这里最好的策略是什么?
答
通过在回调函数声明中放置响应,您正在创建一个仅在回调函数中具有作用域的新的空响应对象。
相反,您只需删除响应参数即可。
function callback(error, results) // response is outside of function
而在此回调函数中,变量响应现在将引用createServer回调的原始响应变量。由于此函数位于createServer回调的内部,因此它将有权访问响应对象。
答
使用repsonse.send(index)
基本上,你可以只打印response对象,看看有什么功能都在里面。
console.log(response)