3

私はこのスタックオーバーフローの質問と回答から始めました。素晴らしいスタートです、ありがとう。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;
                }
            );
    }

ご覧いただきありがとうございます。

4

0 に答える 0