从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/