Google Drive API исключает папки - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь получить все идентификаторы папок детей в массиве. Прямо сейчас код занимает около 10 секунд для рекурсивного запуска. Мне интересно, есть ли более эффективный способ сделать это. Я ограничил приведенный ниже код несколькими уровнями.

async function excludeFolderQuery(folderid, access, level){
  if(level>=2){
    return;
  }
  var query = `mimeType='application/vnd.google-apps.folder' and '${folderid}' in parents&fields=nextPageToken, files(id)&includeItemsFromAllDrives=true&supportsAllDrives=true`;
  var options = { 
    url: encodeURI(`https://www.googleapis.com/drive/v3/files?q=${query}`),
    headers:{'Authorization':'Bearer ' + access, 
    'contentType': 'application/json'},
    method: 'GET',
    json: true,
    muteHttpExceptions: true,
  };
  return new Promise(function (resolve, reject){
    request(options, async function(error, response, body){
      var queryBlocks=[];
      level = level+1;
      if(body && body.files.length>0){
        for(var i = 0;i<body.files.length;i++){
          queryBlocks.push(body.files[i].id);
          if(level<2){
            var ids = await excludeFolderQuery(body.files[i].id, access, level); 
            if(ids){
              for(var j=0;j<ids.length;j++){
                queryBlocks.push(ids[j]);
              }
            }
          }
        }
        resolve(queryBlocks);
      }else{
        resolve();
      }
    })
  })
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...