我在msgraph中有以下(基于kotlin/java)查询
var driveItemSearchCollectionRequestBuilder =
safeGraphServiceClient
.sites(SHAREPOINT_SITE_ID)
.drive()
.root()
.search("¤A=118628")
do{
driveItemSearchCollectionPage = driveItemSearchCollectionRequestBuilder?.buildRequest()?.get()?:break
driveItemSearchCollectionPage.currentPage.map {driveItem->
driveItem?.let{ safeDriveItem ->
//Here I need to find my `safeDriveItem`'s (which is a file) path (where the file is stored)... (or folder)
//`safeDriveItem.folder` is null... (since this is a file)
}
}
driveItemSearchCollectionRequestBuilder = driveItemCollectionPage.nextPage
}while(driveItemSearchCollectionRequestBuilder!=null)
从而生成一组(页)driveitems。此搜索可以在我的sharepoint树中的任何文件夹中找到该文件。在哪里(或如何)可以找到drivitem文件的文件夹(即“\myfolder\level1\level2\level3”)(文件夹项为 null
对于这里的driveitem,我没有找到任何包含它的值)。或者我需要做一些“聪明”的回溯?
2条答案
按热度按时间mftmpeh81#
@shiva找到了一个解决方案,我现在可以像这样查询文件的路径:
我希望将来
driveItem.parentReference.path
可以填充,这样我们就可以避免对graph的二次调用,或者在搜索短语上设置一些开关来公开路径(通信成本Angular )。ecbunoof2#
当您使用上述代码搜索时,正如您所说,您将获得driveitems。选择要为其指定文件夹路径的driveitem的id,然后调用
https://graph.microsoft.com/v1.0/sites/{siteid}/drive/Items/{driveItemid}
它将拉取整个驱动器项对象,其中有一个parentreference对象,该对象内部具有path属性。sharepoint有两个不同的数据源,在这两个数据源中,搜索将通过索引从一个源中提取数据,很少有属性不会显示。所以直接拉一个对象就得到了所有的属性。