2017-06-25 11 views
-1

以下の関数では、existingFilesオブジェクトが空に戻されます。javascriptオブジェクトは常に空です

「service.files.list」の最後に印刷すると、期待した結果が表示されます。

私には何が欠けていますか?

同じ/類似の質問のある古い投稿がありますが、検索時に正しいキーワードが見つからないことがあります。 existingFilesのみ(files.lenght!= 0の場合の値を取得するので

function searchFiles(auth, fileName) { 
    "use strict"; 

    let service = google.drive('v3'); 
    let existingFiles = new Object(); 

    service.files.list({ 
     auth: auth, 
     q: "name contains '"+fileName+"' and trashed = false", 
     spaces: 'drive', 
     pageSize: 100, 
     fields: "nextPageToken, files(id, name)" 
    }, function(err, response) { 
     if (err) { 
      doNotify(hipchatChannelID, hipchatFromUser, 'The API returned an error: '+err,'red'); 
      return; 
     } 
     let files = response.files; 
     if (files.length == 0) { 
      //console.log('No files found.'); 
     } else { 
      for (let i = 0; i < files.length; i++) { 
       let file = files[i]; 
       existingFiles = { 'fileName':file.name, 'fileID':file.id }; 
      } 
     } 
    }); 

    //console.log(JSON.stringify(existingFiles)); 
    return existingFiles; 
} 

答えて

2

機能service.files.listへの呼び出しは、空のオブジェクトが

を返された理由はループ

0

のために後に戻ってみます非同期であります)、実際にはfiles.lenght == 0 existingFilesはnullになります。

関連する問題