microsoft-graph-api - OneDrive Search api 不支持 ListItems 上的展开查询
问题描述
我需要.docx
在我的OneDrive
. 所以这一点很简单,它使用 OneDrive 搜索 api 工作。不起作用的部分是,在响应中,对于每个,我还需要我们创建的与 this 关联DriveItem
的自定义属性。这些自定义属性包含创建某种报告所需的信息。ListItem.Fields
DriveItem
扩展ListItem
似乎root/children
不需要任何搜索就可以在资源上工作,但它不能解决我的问题,我需要文件名中带有 .docx 扩展名的文件,这些文件可以在根目录下或根目录下的任何子文件夹下。
所以这个请求会返回带有响应的 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."}}
是否在Search apiListItem.Fields
中DriveItem
不支持扩展?OneDrive
如果不是,那么我还有另一种方法可以在这里实现我想要做的事情吗?我不是试图在 上搜索CustomProperty
,只是想检索该值作为与其关联的响应的一部分DriveItem
。
预期,如果我通过Microsoft Graph
搜索 api 而不是OneDrive
api 运行它,我会得到相同/相似的错误。
我可以做的一种解决方法是首先搜索.docx
没有 expand 关键字的文件,它会递归搜索并返回.docx
我的OneDrive
. 然后我可以通过OneDrive
使用它们DriveItem.Id
和扩展的ListItem.Fields
属性进行单独调用以再次请求这些项目。不过,那将是一个糟糕的解决方法。因为不是在单个请求中实现我所需要的,而是我必须发出 1000 或 10000 次单独的 I/O 请求(每个 .docx 文件一个)才能获得扩展的ListItem
属性。
解决方案
这是端点的一个已知问题。/search
不幸的是,目前也没有一个好的解决方法。为了检索ListItem
资源,您需要DriveItem
直接从搜索结果中检索每个资源:
/drives/{drive-id}/items/{item-id}?$expand=listItem
推荐阅读
- javascript - Correctly escaping ° character from C# to javascript
- flutter - How to remove overscroll on ios?
- php - PHP 登录表单不显示警告框
- javascript - 如何在胜利图中将渐变填充到 x 轴
- php - preg_match 而关键字附加到其他东西
- in-app-billing - SUBSCRIPTION_IN_GRACE_PERIOD 事件后缺少开发人员有效负载
- sql - 过滤数据后取值
- javascript - Return Strings from Table in Row Order
- validation - Xamarin 表单中的验证的好解决方案?
- c++ - gdb - 查找 strncmp() 函数的值