Я создаю небольшое приложение, которое, помимо прочего, отображает хронологическую ленту всех комментариев и ответов на файлы в своей рабочей учетной записи Google Drive. Позже я создам несколько пользовательских фильтров, чтобы, например, пользователи могли видеть только те комментарии и ответы, в которых они были упомянуты.
Теперь, чтобы получить эти данные, есть конечная точка Google Drive API, чтобы получить список файлов Drive для данного пользователя , пример:
GET https://www.googleapis.com/drive/v3/files?orderBy=modifiedTime%20desc&pageSize=20&fields=*
Существует также конечная точка API Google Drive для получения списка комментариев к данному файлу . Пример: GET https://www.googleapis.com/drive/v3/files/fileId/comments
. Каждый комментарий имеет свойство replies
с массивом ответов на этот комментарий.
Сейчас я делаю следующее:
- Получение 20 самых последних файлов Google Диска пользователя (первая конечная точка)
- Для каждого из 20 файлов Drive, получить список комментариев для этого файла (вторая конечная точка), выгрузив его в массив commentsAndReplies.
- Для каждого из (обычно 30-40 + всего комментариев) запустите forEach, чтобы получить все ответы на комментарий, выгрузив каждый ответ в массив commentsAndReplies.
Это кажется чрезмерным для простого варианта использования, такого как мой. Я просмотрел документацию и не смог найти ничего лучшего для своего варианта использования - например, я думал, что похороненные в метаданных отдельных файлов Google Диска могут быть свойством comments
, поэтому мне нужно сделать только один вызов извлечения - но нет такой удачи.
Есть ли какая-то конечная точка Google Диска, по которой я скучаю, чтобы быть более эффективной, или каким-то другим способом я мог бы быть более эффективной? Я попытаюсь включить некоторые проверки diff-типа при перезагрузке, чтобы мне не приходилось делать все эти запросы API каждый раз, когда пользователь перезагружается (я включил некоторые пакетные операции с использованием map и Promise.all для регулирования своих запросов API, но я иногда я получаю 403 ошибки ограничения скорости API), но мне кажется, что я что-то упускаю.