我正在尝试从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来渲染数据。
任何有关我缺少的内容都会有所帮助。
答案 0 :(得分:0)
你可能不会错过很多,而且可能是你提到的超时。这实际上取决于您希望客户的行为方式:
1)你可以增加客户端的超时时间(也许它是一个内部应用程序,可以增加?也许它是一个XHR对象,你可以控制超时,让它在后台“等待”,同时用户正忙着做页面上的其他内容?)。
2)您可以在后台更改客户端代码,一旦获得结果就更新DOM。
3)您可以拥有一个包含结果的服务器端队列,立即向客户端返回“作业ID”并让客户端对其进行轮询。或者也许使用“彗星”并在作业完成后向客户发送通知。
正如我所说,你真的需要定义你希望客户的行为方式。