Я пытаюсь получить все идентификаторы папок детей в массиве. Прямо сейчас код занимает около 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();
}
})
})
}