簡體   English   中英

使用node.js從mysql查詢大量數據時,網頁渲染失敗

[英]Web page render fails when querying large amount of data from mysql using node.js

我正在嘗試從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呈現數據。

任何有關我所缺少的內容的建議都會有所幫助。

您可能不會錯過太多,可能是您提到的超時。 這實際上取決於您希望客戶的行為方式:

1)您可以增加客戶端的超時(也許是內部應用程序,可以增加嗎?也許是XHR對象,您可以控制超時,讓它在用戶忙於執行其他操作時“在后台”等待)這一頁?)。

2)您可以更改客戶端代碼以在后台執行此操作,並在獲得結果后更新DOM。

3)您可能會有一個服務器端隊列,其中包含結果,並立即向客戶端返回一個“作業ID”,並讓客戶端對其進行輪詢。 或者也許使用“ comet”並在作業完成后向客戶端發送通知。

正如我所說,您確實需要定義客戶的行為方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM