2017-04-05 114 views
0

我試圖從SharePoint列表中獲取超過5000個項目。我正在使用下面的代碼:如何從SharePoint列表中獲取超過5000個項目?

var Url = appurl +"/_api/SP.AppContextSite(@target)/web/lists/getbytitle('" + listName + "')/items?$select=ID,UserCountry,UserName/Name,UserName/Title,ModuleID/ModuleName,TopicID/TopicName,VisitCount,PolicyName,PolicyVisitCount,FAQName,FAQVisitCount,ReferenceName,ReferenceVisitCount&$top=5100&$orderby=VisitCount desc,UserName/Title asc &$expand=UserName/Title,ModuleID,TopicID&@target='" + hostWebUrl+ "'" 

它適用於少於5000條記錄。但是一旦記錄數量增加(超過5000),就會導致內部服務器錯誤。它爲什麼這樣做?

+0

我試圖用最高$ 5100 =獲取,它工作得很好,直到5000 records.But時間紀錄提高了它給內部服務器錯誤 –

+0

你如果我們重複調用相同的REST端點,可以獲得儘可能多的項目。這是一篇不錯的文章。請參考這個 - > https://srinivasananand.wordpress.com/2016/02/08/rest-api-querying-large-list/ –

+0

我曾嘗試通過重複調用仍然得到相同的錯誤,即內部服務器錯誤 –

回答

0
function fetchStatistics() { 
var executor; 
var appurl = appWebUrl.replace('#', ''); 
appurl = appWebUrl.replace('#wrapper', ''); 

var url = appurl + "/_api/SP.AppContextSite(@target)/web/lists/getbytitle('" + listName + "')/items?$select=ID,UserCountry,UserName/Name,UserName/Title,ModuleID/ModuleName,TopicID/TopicName,VisitCount,PolicyName,PolicyVisitCount,FAQName,FAQVisitCount,ReferenceName,ReferenceVisitCount&$orderby=VisitCount desc,UserName/Title asc &$expand=UserName/Title,ModuleID,TopicID&@target='" + hostWebUrl + "'", 
jQuery.getScript("../_layouts/15/SP.RequestExecutor.js", getStatisticsDetails); 
function getStatisticsDetails() 
{ 
    executor = new SP.RequestExecutor(appurl); 
    executor.executeAsync(
     { 
      url: url, 
      method: "GET", 
      dataType: "json", 
      headers: { "Accept": "application/json; odata=verbose" }, 
      success: function (data) { 
       var response = JSON.parse(data.body); 

       if (response.d.__next) { 
        url = response.d.__next; 
        getStatisticsDetails(); 
       } 
       bindDataGrid(); 
      }, 
      error:errorHandlerFetchStatistics 
     } 
    ); 
} 

}

+0

這是我正在嘗試的代碼,但無法獲取5000條以上的記錄 –

相關問題