1

我正在尝试从 node.js 查询 mysql 数据库并将其结果显示在网页上。当 mysql 表的大小很小时,我的代码可以工作。但是当 mysql 表的大小很大时,大约 4GB ,那么执行查询需要相当长的时间。虽然数据是从 mysql 表中提取的,(我可以在节点控制台中看到,因为我正在打印它),网页没有呈现数据。我假设发生了一些超时,因此它不会呈现任何内容,只是说“网页不可用”。

这是我的代码:

    var connection = mysql.createConnection({
         host: 'localhost',
         user: 'xxxx',
         password: 'xxxxxx',
         debug: true
       });
       connection.connect(function (err) {
          if (err) {
          console.log('error in connection is :' + err);
          res.send(500);
          } else {

          connection.query(query, function (err1, rows) {
          // connected! (unless `err` is set)
          if (err1) {
            console.log('error' + err1);
            var model = [{
                "error": "No data matching the query"
            }];
            res.json(model);

           } else {
            console.log('result of query' + rows);
            res.json(rows);
        }

    });
}

});

我正在使用dust.js 来呈现数据。

关于我所缺少的任何指示都会有所帮助。

4

1 回答 1

0

您可能不会错过太多,并且可能是您提到的超时。这实际上取决于您希望客户的行为方式:

1)您可以增加客户端的超时时间(可能是内部应用程序,增加也可以?可能是XHR对象,您可以控制超时时间,让它在“后台”等待,而用户正忙于做其他事情这页纸?)。

2)您可以更改客户端代码以在后台执行此操作,一旦获得结果就更新 DOM。

3)您可以有一个带有结果的服务器端队列,立即向客户端返回一个“作业ID”并让客户端对其进行轮询。或者可以使用“彗星”并在作业完成后向客户端发送通知。

正如我所说,您确实需要定义您希望客户的行为方式。

于 2013-08-12T17:15:18.110 回答