带有CAML查询的SharePoint REST API超过5000个项目

时间:2018-11-21 12:43:42

标签: sharepoint-online caml sharepoint-jsom sharepoint-rest-api

我需要使用SharePoint REST API筛选包含5000多个项目的列表

要过滤的一列是托管元数据列,该列使我无法使用SharePoint REST API GET Urls

我必须在主体中使用带有CAML Query的REST API POST请求来实现此目的。

我的代码如下所示

var viewXml =
{
    ViewXml: "<View>" +
    "<Query>" +
    "<Where><Eq>" +
    "<FieldRef Name='RegionTestHidden'/>" +
    "<Value Type='TaxonomyFieldType'>" + "North" + "</Value>" +
    "</Eq></Where>" +

    "</Query>" +
    "</View>"
}

function CamlQueryRESTCall(listName, viewXml)
{

    var call = jQuery.ajax(
        {
            url: _spPageContextInfo.webAbsoluteUrl+ "/_api/Web/Lists/getByTitle('"+listName+"')/GetItems(query=@v1)?" +
            "@v1=" + JSON.stringify(viewXml),
            type: "POST",

            dataType: "json",
            headers:
            {
                Accept: "application/json;odata=verbose",
                "X-RequestDigest": jQuery("#__REQUESTDIGEST").val()
            }
        }
        );

    return call;

}

我遇到的问题是,如果我基于区域South进行过滤,结果有5000多个项目,则我得到HTTP Error 500 Internal Server Error,错误消息为List item threshold exceeded

对于GET请求,我可以使用$topdata.d.__next加载5000多个项目。但是如何在POST请求中执行类似的逻辑?

我尝试在CAML查询中包括<RowLimit>1000</RowLimit>,但仍然是相同的错误

查询中使用的列被索引为btw。

1 个答案:

答案 0 :(得分:0)

这是由于SharePoint具有列表视图阈值。参见here

这是一个门槛,您可以根据自己的需要进行更改。可以在Central Admin中这样完成:

  • 转到您的SharePoint服务器场的管理中心
  • 转到“应用程序管理”部分下的“管理Web应用程序”
  • 选择要在其中迁移网站的“ Web应用程序”
  • 点击“常规设置”下拉菜单,然后选择“资源限制”
  • 将“列表视图阈值”更改为12000或类似的内容。