Я использую Jquery таблицы данных для отображения данных пользователю.
Поэтому, когда пользователь делает запрос на странице на моем Nodejs сервере:
router.get("/",middleware.isLoggedIn,async function (req, res) {
try{
let result = await rows.query(`
Select col1,col2,col3,col4,col5 from mytable where condition`)
res.render("Page.ejs",{data:result.recordset})
}
catch(err){
console.log(err)
}
})
Сейчас , используя эти данные:
let tblAssignedJobs = $('#tblAssigned').DataTable({
"pageLength": 25,
"oLanguage": {
"sEmptyTable":"There are no jobs assigned to you at this moment"
}
});
function populateData(assignedData) {
let frmEditJobString = ""
let rows = ""
tblAssigned.clear().draw()
for(let item of assignedData){
frmEditJobString =
`<form action="/editJobs" method="POST">
<input style="display:none" name="jobNumber" value="${item.RoeseJobNumber}">
<button class="btn btn-primary">Edit Job</button></form>`
rows = rows + `<tr><td>${item.Number}</td>
<td>${item.Type}</td>
<td>${item.Name}</td>
<td>${item.CustomerName}</td>
<td>${item.Description}</td>
<td>${item.Number}</td>
<td>${item.Address}</td>
<td>${frmEditString}</tr>`
}
tblAssigned.rows.add($(rows)).draw();
//Remove from memory
frmEditJobString = ""
}
Теперь, чтобы загрузить 15 588 строк, требуется около 5 секунд, что не так уж и плохо, но я чувствую, что было бы намного лучше, если бы я мог просто загрузить первую страницу и загрузить другие страницы в фоновом режиме, так как я показываю 25 записей на странице.
Или есть способ делать запросы на страницу вместо загрузки всех данных. Если кто-то использовал Nodejs с bootstrap datatable, какое решение вы применили?