在node.js中将结果集发送回客户端

时间:2013-01-27 06:59:01

标签: node.js node-mysql

我遇到了使用Node.js将结果集恢复回客户端的问题。我是新手,并将它用于一个项目,但我陷入困境,不知道为什么。情况就是这样:我有一个网页,一个服务器,一个请求处理程序和一个数据库接口。我可以毫无问题地在客户端和服务器之间来回发送数据。它唯一不起作用的是我尝试将查询结果发送回客户端。

function doSomething(response)
{
    var data = {
        'name': 'doSomething'
    };

    response.writeHead(200, {'Content-Type': 'text/html', 'Access-Control-Allow-Origin': '*'});     
    response.end(JSON.stringify(data));
}

这很好,因为我可以从客户端的对象中读取名称,但是

function fetchAllIDs(response)
{
    dbInterface.fetchAllIDs(function(data) {
        // console.log(data) prints the correct information here        
        response.writeHead(200, {'Content-Type': 'text/html', 'Access-Control-Allow-Origin': '*'});     
        response.end(data);
        // console.log(data) from the client side is just blank
    });
}

我相信问题是我处理回调和响应的方式,因为不试图使用mysql我的其余代码工作正常。谢谢!

编辑:我删除了一个似乎让人迷惑的代码。这只是为了表明,如果我在回调之外有响应代码,那么我就可以将任何数据返回给服务器。在我的实际代码中,我没有两个响应语句。我只是无法将fetchAllIDs函数中的行返回给客户端。

1 个答案:

答案 0 :(得分:0)

你写它的方式意味着

reponse.end('This string is received by the client'); 
总是在回调函数之前调用

行,这意味着响应已经结束。

在JS下,所有代码都将在下一个事件(您的回调函数)从队列中删除之前完成。注释掉上面的行//并测试它