2017-04-05 116 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条以上的记录 –

相关问题