#javascript #jquery #arrays #rest #sharepoint-online
#javascript #jquery #массивы #rest #sharepoint-онлайн
Вопрос:
У меня есть большая библиотека документов с файлами 50 тыс. В настоящее время я получаю сообщение об ошибке, что запрос превышает пороговое значение. Я добавил индексы и использовал все возможные фильтры при вызове rest api и все равно достиг порогового значения для запроса. Я читал, что рекурсивный вызов позволил бы мне обрабатывать пакеты по 5000 и объединять их в один и тот же результат. Я хочу отобразить выходные данные с использованием таблиц данных jquery, а параметры диапазона дат фильтра передаются из URL. Как добиться рекурсивных вызовов?
$(document).ready(function() {
loadItems();
});
function loadItems() {
var range = GetFromToValues("FromTo");
var oDataUrl = "SPO_Site/_api/web/lists/getbytitle('List_Name')/items?$top=5000amp;$select=Created,Regamp;$filter=" range "";
$.ajax({
url: oDataUrl,
type: "GET",
dataType: "json",
headers: {
"accept": "application/json;odata=verbose"
},
success: mySuccHandler,
error: myErrHandler
});
}
function mySuccHandler(data) {
try {
$('#table_id').DataTable({
"pageLength": 100,
"dom": 'frtip',
"aaData": data.d.results,
"aoColumns": [
{"mData": "Created"},
{"mData": "Reg"}
]
});
} catch (e) {
alert(e.message);
}
}
function myErrHandler(data, errMessage) {
alert("Invalid date range");
}
function GetFromToValues(param) {
var url = window.location.href.slice(window.location.href.indexOf('?') 1).split('amp;');
for (var i = 0; i < url.length; i ) {
var urlparam = url[i].split('=');
if (urlparam[0] == param) {
return urlparam[1];
}
}
}
Я могу создавать массивы из 5000, используя приведенный ниже код. Можно ли это объединить с моим кодом выше, чтобы сгенерировать таблицу данных jquery?
var response = response || [];
var listURL = "SPO_Site/_api/web/lists/getbytitle('List_Name')/items?$top=5000amp;$select=*";
GetListItemsRecursive(listURL);
function GetListItemsRecursive(restURL) {
$.ajax({
url: restURL,
method: "GET",
contentType: "application/json;odata=verbose",
headers: {
"accept": "application/json;odata=verbose"
},
success: function (data) {
response = response.concat(data.d.results);
console.log(data);
if(data.d.__next) {
GetListItemsRecursive(data.d.__next);
}
},
error: function (error) {
console.error(error);
}
});
}```