如何在目录树的JSON文件中获取文档路径?

时间:2018-01-22 15:43:42

标签: javascript arrays json

我的问题是在JSON文件中轻松搜索/路径查找。

该项目是一个Web应用程序。有人可以输入"文档编号" (例如48555 001 00-8.pdf)在搜索字段中,当此人点击Enter时,会出现指向此文档的链接。

我搜索文档路径太慢,复杂,糟糕。真糟糕 我的想法是将所有目录作为一个数组,然后搜索这个"客户555"等等,直到我找到正确的文件。但问题出在这里:它真的很慢......如果还有一个目录/文件夹,我该怎么办呢?那是什么,如果文件在我想要的另一个文件夹中,因为..是的..人类。所以,我猜不是最好的主意。

JSON文件如下所示:

[
      {"type":"directory","name":"documents/","contents":[
        {"type":"directory","name":"customer 555","contents":[
          {"type":"directory","name":"product 1","contents":[
            {"type":"directory","name":"product 1.2","contents":[
              {"type":"directory","name":"changes","contents":[
                {"type":"file","name":"changes.zip"}
              ]},
              {"type":"directory","name":"document 8","contents":[
                {"type":"file","name":"48555 001 00-8.pdf"},
              ]},
    ....

最后我想有一条这样的道路:

localhost/documents/customer 555/product 1/product 1.2/document 8/48555 001 00-8.pdf

这是我的Apache服务器上此文件的路径。

是否有直接获取路径的解决方案?让我们说,我正在寻找" 48555 001 00-8.pdf"然后上(目录)到顶级目录"文件/"?或者是否有一个lib或方法可以给我树中的位置?

我正在使用JavaScript。

1 个答案:

答案 0 :(得分:1)

简单来说,您需要有办法搜索文件名并同时访问其路径。

因此,您可以通过从您发布的输出中提取以下内容来自行完成(通过JSON层次结构进行递归):

var files = [
    {
        "name": "48555 001 00-8.pdf",
        "path": "documents/customer 555/product 1/product 1.2/document 8/48555 001 00-8.pdf"
    }, {
        "name": "changes.zip",
        "path": "documents/customer 555/product 1/product 1.2/changes/changes.zip"
    }
]

或使用您的服务器端技术搜索文件,即在节点中您可以使用该软件包:find

var find = require('find');

// Filter by regular expression.

find.file(/48555 001 00-8\.pdf/, __dirname, function(files) {
  console.log(files.length);
})

不要忘记清理用户输入以转义正则表达式特殊字符