我的问题是在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。
答案 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);
})
不要忘记清理用户输入以转义正则表达式特殊字符