Microsoft Graph Api - поиск ТОЛЬКО внутри папки - PullRequest
0 голосов
/ 02 марта 2020

Я пытался выполнить поисковый запрос в Microsoft Graph API, чтобы найти driveItems внутри заданной папки. Проблема в том, что поиск возвращает результаты за пределами заданной папки, намного раньше в иерархии папок - это проблема, поскольку я не хочу, чтобы мое приложение имело доступ ко всему, что не находится внутри папки.

Итак, пример структуры папок:

ParentFolder
-- A.pdf
-- B.pdf
-- ChildFolder
   -- C.pdf

Согласно документации API графа, папка идентифицируется по их DriveItemID внутри данного диска. Конечно, выполнение GET для

/drives/"driveID"/items/"ChildFolderID"

творит чудеса - я могу найти папку и всю ее информацию, и списки / children только C .pdf.

Однако, Похоже, что функциональность поиска ограничена. Выполнение /drives/<driveID>/items/ChildFolderID/search(q='pdf') возвращает любой файл PDF внутри моего диска, а не только внутри ChildFolder. То же самое верно, если я заменил часть / drive / driveID просто / me / drive, который является ссылкой на один диск с бизнес-файлами «мои файлы».

Ниже приведен мой код с использованием msgraph-sdk- javascript sdk для выполнения запроса get (это только пример, проблема не может быть с самим sdk, так как при использовании инструмента графического обозревателя возникает та же проблема).

            let url = `/drives/${driveID}/items/${itemID}/search(q='${query}')?`;

            if (options.cursor)
                url += `$skiptoken=${options.cursor}`;

            return self.client
                .api(url)
                .top(options.limit)
                .headers({
                    'Content-Type': 'application/json'
                }).get()
                .then(data => {

                    console.log('data: ', data);
                    // ... rest of function ...

Этот объект данных имеет все мои pdf-файлы: A.pdf, B.pdf и C .pdf.

Что меня больше всего беспокоит, так это то, что запрос отлично работает внутри экземпляра sharepoint. Запрос /sites/siteID/drives/driveID/items/ChildFolder/search(q='pdf') правильно определяет область поиска, чтобы выполнять поиск только в указанной папке. И это тот же API. Редактировать: Nevermind Sharepoint также не работает, та же проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...