私はこのスタックオーバーフローの質問と回答から始めました。素晴らしいスタートです、ありがとう。node.js を使用してドロップボックス フォルダー ツリー をたどろうとしていますが、node.js を使用していません。私はまっすぐなJavascriptを使用しています。回答で言及されているカウンターのインクリメントとデクリメントについてはわかりません-それらがどこに行くのかわかりません。
jQuery.getJSON を使用してメタデータを取得しています。基本的に、私はこの時点で迷っています。Dropbox からメタデータを取得できますが、関数 pathsToArray の処理に問題があります。
関数 dbxGetContents は、Dropbox への別の呼び出しを実行して、見つかったフォルダーのフォルダー コンテンツを取得するために設定した単なる関数です。
function dbxCreateTree(clickFolderName, crumbType, crumbData){
// Get the OAUTH connection to Dropbox. It's a call to the JS function dbxConnect()
var dbxConn = dbxConnect();
var dbxUrlTree = "https://api.dropbox.com/1/metadata/dropbox/" + clickFolderName;
dbxUrlTree = dbxUrlTree + "?";
dbxUrlTree = dbxUrlTree + dbxConn;
jQuery.getJSON(dbxUrlTree,
function(data){
function pathsToArray(metadataarr,callback){ //Call this function and pass the Dropbox metadata array to it, along with a callback function
for (aItem in metadataarr ){ //For every folder or file in the metadata(which represents a specific URL)
if (metadataarr[aItem].is_dir){ //It is a folder
dropbox.paths.push(metadataarr[aItem].path+"/"); //Write the path of the folder to my array called 'dropbox.paths'
dbxGetContents(metadataarr[aItem].path.slice(1),function(err, data){ //We go into the folder-->Call the dropbox API to get metadata for the path of the folder.
if (err){
}
else {
pathsToArray(data.contents,function(err){ //Call the function from within itself for the url of the folder. 'data.contents' is where the metadata returned by Dropbox lists files/folders
});
}
});
}
else { //It is a file
//dropbox.paths.push(metadataarr[aItem].path); //Write the path of the file to my array called 'dropbox.paths'
}
}
return callback(); //This returns multiple times, instead of only once when everything is ready, and that is the problem!
};
pathsToArray(data);
});
}
これが dbxGetContents 関数です。
function dbxGetContents(dbxFolderName){
// Get the OAUTH connection to Dropbox. It's a call to the JS function dbxConnect()
alert('here in dbxGetContents looking for ' + dbxFolderName);
var dbxConn = dbxConnect();
var dbxUrlTree = "https://api.dropbox.com/1/metadata/dropbox/" + dbxFolderName;
dbxUrlTree = dbxUrlTree + "?";
dbxUrlTree = dbxUrlTree + dbxConn;
jQuery.getJSON(dbxUrlTree,
function(data){
alert('here returning data');
return data;
}
);
}
ご覧いただきありがとうございます。