在nodejs中的回调中写入响应对象之前,如何等待查询完成?

时间:2011-11-18 02:26:52

标签: javascript node.js callback httpresponse

我正在编写一个执行sql查询的函数,如下所示:

function handle_request(req, res) {
    var data = "";
    if (req.method == 'POST') {

      req.on('data', function(chunk) {
          data += chunk.toString();
      });

      req.on('end', function() {
          sql_validator.validate_query(data, res, write_response);
      });
    }    
}

function write_response(response, is_valid){
    response.writeHead(200, "OK", {'Content-Type': 'text/html'});
    if(is_valid){
        response.end("Success");
    }
    else {
        response.end("Failure");
    }
}

validate_query函数如下所示:

function validate_query(query, response, callback) {

    var connection = DB.connect({
       //db_parameters
    }, function(err) {
        if (err){
            console.log("Failed to connect: " + err);
        }else{
            console.log("Connection established");
            connection.query(query, function(err, fields, rows, status) {
                if (err){
                    console.log(err);
                    callback(response, false);
                    throw err;
                }
                else{
                    callback(response, true);
                }
            });
        }
    });    
}

问题是请求者端没有收到响应(这是PHP代码)。

在各个阶段打印出响应对象时,事实证明,在调用回调(response,true / false)时,响应对象变为不可写。

在查询完成执行后是否有任何编写响应的方法?

0 个答案:

没有答案