在下面的函数中,existingFiles
对象返回空。
如果我在'service.files.list'的末尾打印它,那么我会看到预期的结果。
我错过了什么?
肯定有较旧的帖子有相同/类似的问题但我在搜索时可能会错过正确的关键字。
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;
}
答案 0 :(得分:2)
对函数service.files.list
的调用是异步的,这是返回空对象的原因
尝试在for循环后返回
答案 1 :(得分:0)
因为existingFiles仅在(files.lenght!= 0)时获取值,实际上如果files.lenght == 0 existingFiles将为null。