Я пытаюсь запросить базу данных mysql из node.js и отобразить ее результаты на веб-странице. Мой код работает, когда размер таблицы mysql мал. Но когда размер таблицы mysql большой, около 4 ГБ, то для выполнения запроса требуется довольно много времени. Хотя данные извлекаются из таблицы mysql (я вижу, что в консоли узла, когда я распечатываю ее), веб-страница не отображает данные. Я предполагаю, что происходит некоторый тайм-аут, и поэтому он ничего не отображает, просто говорит, что «веб-страница недоступна».Сбой веб-страницы при запросе большого количества данных из mysql с помощью node.js
вот мой код для него:
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 для отображения данных.
Любые указатели на то, что мне не хватает, были бы полезны.
OK. Фактически, я намеревался пойти с параметром таймаута, но в модуле mysql npm, который я использую, «setTimeout() для Connection/Query» был указан как todo для модуля. Думаю, мне придется искать другие модули, в которых доступна опция таймаута. –
Я не предлагаю тайм-аут для запроса MySQL: это означало бы, что (по вашему мнению) большинство запросов при большой таблице никогда не получат ответа. Я предлагаю, чтобы клиентская сторона ждала, асинчел, ответа, как бы долго она ни шла. –
Справа. Понял. (На самом деле я надеялся увеличить тайм-аут.) Но я думаю, что я поеду с вашим предложением и попробую какой-нибудь асинхронный модуль. –