[英]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.