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