OneDrive Search api不支持在ListItem上展开查询

时间:2018-05-09 15:07:34

标签: microsoft-graph onedrive

我需要在.docx中搜索扩展名为OneDrive的文件。所以这一点很简单,它可以使用OneDrive搜索API。不起作用的部分是响应中的每个DriveItem,我还需要在与此ListItem.Fields相关联的DriveItem下创建的自定义属性。这些自定义属性包含创建某种报告所需的信息。

扩展ListItem似乎可以在root/children资源上运行而无需任何搜索,但它无法解决我的问题,我需要文件名中包含.docx扩展名的文件,这些文件可以在root下或根目录下的任何子文件夹。

因此,此请求返回带有响应的CustomProperty

/_api/v2.0/drives/[drive id]/root/children?select=*%2cwebDavUrl
%2csharepointIds&expand=listItem(select%3dfields%3bexpand%3dfields(select%3dCustomProperty))

但是,当我尝试在搜索查询返回的ListItem上展开DriveItems时,如下所示:

/_api/v2.0/drives/[drive id]/root/search(q='docx')?select=*%2cwebDavUrl%2csharepointIds&expand=listItem(select%3dfields%3bexpand%3dfields(select%3dCustomProperty))

我收到错误:

Error: {"error":{"code":"notSupported","message":"The request is not supported by the system."}}

ListItem.Fields搜索API中不支持DriveItem上展开OneDrive吗?

如果不是,那么我有另一种方式来实现我想要做的事吗?我不是要尝试搜索CustomProperty,只是希望将该值作为响应的一部分与其关联的DriveItem一起检索。

如果我通过Microsoft Graph搜索api而不是OneDrive api运行此操作,我会得到相同/类似的错误。

我能做的一个解决方法, 首先搜索没有expand关键字的.docx文件,它会递归搜索并返回.docx中的所有OneDrive个文件。然后,我可以使用OneDrive和展开的DriveItem.Id属性逐个拨打ListItem.Fields来逐个请求这些项目。那将是一个可怕的解决方法。因为我不是在单个请求中实现我需要的,而是必须生成1000或10000个单独的I / O请求(每个.docx文件一个)以获得扩展的ListItem属性。

1 个答案:

答案 0 :(得分:1)

这是一个known issue端点/search。不幸的是,目前还没有一个好的解决方法。要检索ListItem资源,您需要直接从搜索结果中检索每个DriveItem

/drives/{drive-id}/items/{item-id}?$expand=listItem