我的http.createServer响应有问题。
我有一个onRequest函数,它解析来自用户POST的正文并将其传递给我的函数。我希望在我的函数完成查询后向客户端发送响应,但是我无法将响应传递给我的函数,因为它在匿名函数中是未定义的。
function onRequest(request, response){
console.log("Request received.");
if (request.method == 'POST'){
var body =' ';
request.on('data', function(data){
body += data;
});
request.on('end', function(){
var as = JSON.parse(body);
spatial_index_query(as['x'], as['y'], response);
});
}
}
http.createServer(onRequest).listen(8013, '0.0.0.0');
我的功能
function spatial_index_query(x, y, res) {
db.get("Select id from spatial_index where minX < ? AND minY < ? AND maxX > ? AND maxY > ?",[x, y, x, y],
function(err, rows, res){
response.writeHead(200, {"Content-Type":"text/plain"});
response.write('it works');
response.end();
};
它不起作用。
现在如果我试图将响应传递给像这样的正常函数
function test(response){
console.log(response);
};
它可以工作,但如果我试图将响应传递给内部具有匿名函数的函数,那么事实证明响应是未定义的。
在这种情况下使用响应的正确方法是什么?
我可以将我的功能改为这样的
function spatial_index_query(x, y) {
db.get("Select id from spatial_index where minX < ? AND minY < ? AND maxX > ? AND maxY > ?",[x, y, x, y],
function(err, rows){
return 'it works'
// how to call response now?
};
但我现在不知道如何调用响应。
我还试图在onRequest函数中创建result()函数,我可以在查询和传递结果后从我的函数调用,但是它不起作用,因为在onRequest函数之外看不到result()。
修改
我的功能中有拼写错误,而不是响应。固定功能:
function spatial_index_query(x, y, response) {
db.get("Select id from spatial_index where minX < ? AND minY < ? AND maxX > ? AND maxY > ?",[x, y, x, y],
function(err, rows){
response.writeHead(200, {"Content-Type":"text/plain"});
response.write('it works');
response.end();
};
答案 0 :(得分:0)
我的功能中输入错误,而不是响应。固定功能:
function spatial_index_query(x, y, response) {
db.get("Select id from spatial_index where minX < ? AND minY < ? AND maxX > ? AND maxY > ?",[x, y, x, y],
function(err, rows){
response.writeHead(200, {"Content-Type":"text/plain"});
response.write('it works');
response.end();
};