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