【问题标题】:Can we Query multi-level lookup columns in SharePoint Online Using Rest API?我们可以使用 Rest API 在 SharePoint Online 中查询多级查找列吗?
【发布时间】:2019-09-25 23:11:17
【问题描述】:

有 3 个包含这些列的 SharePoint 列表:

人员列表:

  1. 标题
  2. 地址查找列

地址列表:

  1. 标题
  2. AddressTypeLookupColumn

地址类型列表:

  1. 标题

我需要的是使用 oData REST API 的人名、地址和地址类型。

以下是我的查询:

https://mysitecollection/sites/test/_api/web/lists/getbytitle('PersonList')/items?$select=Title,AddressLookupColumn/Title,AddressLookupColumn/AddressTypeLookupColumn/Title&$Expand=AddressLookupColumn,AddressLookupColumn/AddressTypeLookupColumn_

它给了我这个错误:

<m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<m:code>-1, Microsoft.SharePoint.SPException</m:code>
<m:message xml:lang="en-US">
The query to field 'AddressLookupColumn/AddressTypeLookupColumn' is not valid.
</m:message>
</m:error>

如何更正我的查询?

【问题讨论】:

  • 我的猜测是您将无法在单个查询中进行两级深度查找。您可能需要使用 PersonList 中的 AddressLookupColumn/ID 值对 AddressList 进行第二次查询。

标签: rest sharepoint sharepoint-2013


【解决方案1】:

SharePoint Rest 调用不支持嵌套查询

SharePoint REST API 不支持两级 $expand 或嵌套查询。例如,您正在查询 A 列表,而 A 具有 B 列表中的查找列。 B 有一个来自 C 列表的查找列。因此,如果你在 A 列表上查询,你只能$expand B 的所有列。

/_api/web/lists/getbytitle('A')?$select={columns for B}&$expand=B

您不能$expand C 中的任何列。原因是 A 和 C 之间没有直接关系。

解决方法 #1:

首先,获取 B 列表的项目 ID,对 B 列表和 C 的列进行另一次 REST 调用。

/_api/web/lists/getbytitle('B')/items({ItemId})?$select={select column from c}&$expand=C  

您可以使用$batch 请求一次获取多个项目,但 $batch 请求在 SharePoint 2013 中不支持。

更多信息: SharePoint REST API Limitation.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2018-09-16
    • 2022-01-23
    • 1970-01-01
    • 2016-04-15
    • 2019-06-02
    • 1970-01-01
    相关资源
    最近更新 更多