使用Box API遍历文件夹结构

时间:2016-10-02 17:26:21

标签: node.js box-api

我正在寻找有关通过JavaScript中的Box API遍历文件夹结构的最佳方法的指导。我需要根据Box API的响应递归循环结构,并对返回的文件和文件夹采取措施。

当找到一个文件夹时,我需要获取所有包含项目的文件夹,如果该文件夹包含带有项目的文件夹,我还需要获取这些文件夹,依此类推。见下面的例子:

StartingFolder
    Folder1A
        File1B
        Folder2B
            Folder1C
                File1D
            File2C
        Folder3B
        File4B
    Folder2A
        Folder1B
            File1C
        Folder2B
            Folder1C
                File1D
        File2B
    Folder3A
        File1B

所有这些项目均由idtype标识。所以我知道,如果我找到一个包含type: "folder"的项目,那么我需要向Box发出另一个请求以使用其id获取其项目。我可以在第一级轻松完成此操作,但我不知道如何遍历整个结构到每个分支的底部。

任何人可以提供的示例或最佳实践都会很棒!

1 个答案:

答案 0 :(得分:0)

我没有JavaScript示例,但这是Python中的一个。希望它能给你一些关于如何进行的概念性指导。

def doSomethingWithFolder(folder):
    # Do something with the folder here

def recurse(folderId):
    # get the folder contents
    contents = client.folder(folder_id=folderId).get_items(limit=1000, offset=0)
    # filter the contents for just the subfolders based on the 'type' property
    folders = filter(lambda x: x.type=="folder", contents)
    # for each subfolder...
    for folder in folders:
        # ... take some action on the subfolder ...
        doSomethingWithFolder(folder)
        # ... and recurse using the 'id' property
        recurse(folder.id)         

recurse("0") # recurse starting from the root, or substitute another folder ID.