我需要使用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请求,我可以使用$top
和data.d.__next
加载5000多个项目。但是如何在POST请求中执行类似的逻辑?
我尝试在CAML查询中包括<RowLimit>1000</RowLimit>
,但仍然是相同的错误
查询中使用的列被索引为btw。
答案 0 :(得分:0)
这是由于SharePoint具有列表视图阈值。参见here
这是一个门槛,您可以根据自己的需要进行更改。可以在Central Admin中这样完成: