Node.js 动态生成oobjects中的属性,并在其中循环函数?

Node.js 动态生成oobjects中的属性,并在其中循环函数?,node.js,fs,Node.js,Fs,我正在编写一个httpfileserver。它不使用数据库,而是像其他文件一样将文件保存在硬盘上 为了提高效率,它使用一个JavaScript对象进行响应,该对象包含文件所在层次结构中的所有文件和目录。至少是这样。我无法生成这样的函数,因为我无法找到一种方法使对象中动态生成的“路径”足够“深入” 我得到的函数current的工作原理是在对象中向下移动目录。然而,这只是一个步骤。它在执行多个步骤时失败,因此无法处理更复杂的目录层次结构 我正在使用fs读取目录和文件 工作函数的预期输出示例: jso

我正在编写一个httpfileserver。它不使用数据库,而是像其他文件一样将文件保存在硬盘上

为了提高效率,它使用一个JavaScript对象进行响应,该对象包含文件所在层次结构中的所有文件和目录。至少是这样。我无法生成这样的函数,因为我无法找到一种方法使对象中动态生成的“路径”足够“深入”

我得到的函数current的工作原理是在对象中向下移动目录。然而,这只是一个步骤。它在执行多个步骤时失败,因此无法处理更复杂的目录层次结构

我正在使用fs读取目录和文件

工作函数的预期输出示例:

jsobject = {file0: {
    filename : "sample.txt",
    content  : "this is sample.txt"
    },
    directory0 : {
        dirname : "directory",
        content : {
            file0 : {
                filename: "sample2.txt",
                content : "this is sample2.txt"
            },
            directory0 : {
                dirname : "directory2,",
                content : {}
            }
        }
    }
}
function readdir(dirtoread, subto) {

    if (dirtoread === undefined) {
        var dirtoread = fs.readdirSync("./Files", {encoding: "utf8"})[_.size(fs.readdirSync("./Files", {encoding: "utf8"})) - 1];
    }
        var fncounter = 0;
        var dircounter = 0;

        var files = fs.readdirSync("./Files/" + dirtoread,{encoding:"utf8"});
            for(var i = 0; i < _.size(files); i++) {

                if(files[i].toString().indexOf(".") !== -1) {



                    var nfile = "file" + fncounter;
                    var fname = files[i];

                    if(subto != undefined) {

                        var fcontent = fs.readFileSync("Files/" + dirtoread + "/" + files[i], {encoding:"utf8"});

                        json[subto].content[nfile] = {filename : fname, 
                            content: fcontent
                         };      


                    } else {
                        var fcontent = fs.readFileSync("Files/" + dirtoread + "/" + files[i], {encoding:"utf8"});
                        json[nfile] = {filename : fname, 
                            content: fcontent
                         };                        
                    }


                    fncounter++;

                } else {

                    var ndir = "directory" + dircounter;
                    var dname = files[i];
                    var nextdir = "/" + dirtoread + "/" + dname;

                    if (subto != undefined) {

                        json[subto].content[ndir] = {dirname : dname,
                                      content: {}
                                    }
                                    readdir(nextdir, ndir);
                    }else {

                    json[ndir] = {dirname : dname,
                                  content: {}
                                }

                                readdir(nextdir, ndir);
                            }


                    dircounter++;
                }
            }
            dirtoread = "not set";

}
职能:

jsobject = {file0: {
    filename : "sample.txt",
    content  : "this is sample.txt"
    },
    directory0 : {
        dirname : "directory",
        content : {
            file0 : {
                filename: "sample2.txt",
                content : "this is sample2.txt"
            },
            directory0 : {
                dirname : "directory2,",
                content : {}
            }
        }
    }
}
function readdir(dirtoread, subto) {

    if (dirtoread === undefined) {
        var dirtoread = fs.readdirSync("./Files", {encoding: "utf8"})[_.size(fs.readdirSync("./Files", {encoding: "utf8"})) - 1];
    }
        var fncounter = 0;
        var dircounter = 0;

        var files = fs.readdirSync("./Files/" + dirtoread,{encoding:"utf8"});
            for(var i = 0; i < _.size(files); i++) {

                if(files[i].toString().indexOf(".") !== -1) {



                    var nfile = "file" + fncounter;
                    var fname = files[i];

                    if(subto != undefined) {

                        var fcontent = fs.readFileSync("Files/" + dirtoread + "/" + files[i], {encoding:"utf8"});

                        json[subto].content[nfile] = {filename : fname, 
                            content: fcontent
                         };      


                    } else {
                        var fcontent = fs.readFileSync("Files/" + dirtoread + "/" + files[i], {encoding:"utf8"});
                        json[nfile] = {filename : fname, 
                            content: fcontent
                         };                        
                    }


                    fncounter++;

                } else {

                    var ndir = "directory" + dircounter;
                    var dname = files[i];
                    var nextdir = "/" + dirtoread + "/" + dname;

                    if (subto != undefined) {

                        json[subto].content[ndir] = {dirname : dname,
                                      content: {}
                                    }
                                    readdir(nextdir, ndir);
                    }else {

                    json[ndir] = {dirname : dname,
                                  content: {}
                                }

                                readdir(nextdir, ndir);
                            }


                    dircounter++;
                }
            }
            dirtoread = "not set";

}
函数readdir(dirtoread,subto){ if(dirtoread==未定义){ var dirtoread=fs.readdirSync(“./Files”,{encoding:“utf8”})[[uu.size(fs.readdirSync(“./Files”,{encoding:“utf8”})]-1]; } var-fncounter=0; var-dircounter=0; var files=fs.readdirSync(“./files/”+dirtoread,{encoding:“utf8”}); 对于(变量i=0;i<\u0.size(文件);i++){ if(文件[i].toString().indexOf(“.”!=-1){ var nfile=“file”+fncounter; var fname=文件[i]; 如果(小计!=未定义){ var fcontent=fs.readFileSync(“Files/”+dirtoread+“/”+Files[i],{encoding:“utf8”}); json[subto].content[nfile]={filename:fname, 内容:fcontent }; }否则{ var fcontent=fs.readFileSync(“Files/”+dirtoread+“/”+Files[i],{encoding:“utf8”}); json[nfile]={filename:fname, 内容:fcontent }; } fncounter++; }否则{ var ndir=“目录”+dircounter; var dname=文件[i]; var nextdir=“/”+dirtoread+“/”+dname; 如果(小计!=未定义){ json[subto].content[ndir]={dirname:dname, 内容:{} } readdir(nextdir、ndir); }否则{ json[ndir]={dirname:dname, 内容:{} } readdir(nextdir、ndir); } dircounter++; } } dirtoread=“未设置”; }
你能出示一些代码吗?当然可以。你想要什么代码?这种函数不起作用吗?是的,似乎不起作用的函数。您可能只想使用一个包来执行文件系统漫游:您需要创建一个递归函数(一个调用自身的函数)并开始构建json对象-对递归js函数进行web搜索。或者试试,也许fs walk提供了类似于@MoltasDevcan的东西,你可以展示一些代码吗?当然可以。你想要什么代码?这种函数不起作用吗?是的,似乎不起作用的函数。您可能只想使用一个包来执行文件系统漫游:您需要创建一个递归函数(一个调用自身的函数)并开始构建json对象-对递归js函数进行web搜索。或者试试,也许fs walk提供了类似于@MoltasDev的服务