sharepoint-online - 带有 CAML 查询的 SharePoint REST API 超过 5000 个项目
问题描述
我需要使用 SharePoint REST API 筛选包含 5000 多个项目的列表
要筛选的列之一是托管元数据列,它阻止我使用 SharePoint REST API GET Urls
我必须在正文中使用带有 CAML 查询的 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 请求中做类似的逻辑呢?
我尝试包含<RowLimit>1000</RowLimit>
在 CAML 查询中,但仍然出现同样的错误
查询中使用的列被索引了。
解决方案
这是由于 SharePoint 具有的列表视图阈值。看这里
这是一个门槛,您可以根据自己的需要进行更改。这是在 Central Admin 中完成的,如下所示:
- 转到您的 SharePoint 场的中央管理
- 转到“应用程序管理”部分下的“管理 Web 应用程序”
- 选择迁移站点的“Web 应用程序”
- 单击“常规设置”下拉菜单并选择“资源限制”
- 将“列表视图阈值”更改为 12000 或类似的值。
推荐阅读
- php - PHP 数组库存编辑
- ios - 斯威夫特:如何总是从洗牌数组中获得不同的价值
- javascript - 如何在 Laravel 中启动 JS 功能时关闭重新加载
- html - 如何强制文本在 html-email 中保持三角形大小?
- javascript - React Custom Hook 不触发 DOM 更新
- javascript - 如何在 NodeJS/JavaScript 中将文本格式 JSON 数组转换为 JSON 对象数组?
- mysql - 在sql中,当我在将其中一列作为主键后使用'group by'时,它没有在所需的组中显示输出?
- android-studio - 在 Windows 上的 android 模拟器上运行 react-native 应用程序
- python - 为什么我会得到一个带有 difflib.ndiff 的杂散元素?
- java - 使用 postman 和 android 将 json 发送到 Laravel