Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中从非关系数据库构建JSON树时遇到问题_Javascript_Node.js_Json_Recursion_Tree Traversal - Fatal编程技术网

在Javascript中从非关系数据库构建JSON树时遇到问题

在Javascript中从非关系数据库构建JSON树时遇到问题,javascript,node.js,json,recursion,tree-traversal,Javascript,Node.js,Json,Recursion,Tree Traversal,我正在尝试构建一个脚本,该脚本将定期递归地迭代我的非关系数据库(firestore),并从中生成JSON对象 我能够遍历所有的集合、文档和子集合,直到最后一层,但是我很难以正确的格式生成JSON对象:要么得到两个底层,要么只得到两个顶层。我还尝试用每个递归生成一个新的JSON对象,并将其附加到一个全局JSON对象,但这也是格式错误的 在尝试附加到全局JSON对象但没有成功之后,我决定通过从成功的非关系数据库生成一个文件夹系统来测试我的递归。然而,我想自动化这个过程,生成一个文件夹系统是非常昂贵和

我正在尝试构建一个脚本,该脚本将定期递归地迭代我的非关系数据库(firestore),并从中生成JSON对象

我能够遍历所有的集合、文档和子集合,直到最后一层,但是我很难以正确的格式生成JSON对象:要么得到两个底层,要么只得到两个顶层。我还尝试用每个递归生成一个新的JSON对象,并将其附加到一个全局JSON对象,但这也是格式错误的

在尝试附加到全局JSON对象但没有成功之后,我决定通过从成功的非关系数据库生成一个文件夹系统来测试我的递归。然而,我想自动化这个过程,生成一个文件夹系统是非常昂贵和无效的

为了进行测试并消除主脚本中可能出现的错误,我使用给定的JSON数据模型构建了一个小程序:

const数据={
“根”:{
'doc1':{'id':1,'value':545},
'doc2':{'id':2,'value':645},
“文件3”:{
"id":3,,
'subCol31':{'id':31,'data':{'value1':{'da':2,'la':3},'value2':545},
'subCol32':{'id':32,'data':{'value1':31,'data':{'data':{'id':321,'data':{'id':311,'value':5435},'value':1545},'value':45}
},
'doc4':{'id':4,'age':125}
}
}
var processed={};
函数isEmpty(obj){
设numproperty=0;
for(出租对象中的属性){
if(对象hasOwnProperty(财产)){
++不动产;
}
}
返回numproperty==0;
}
函数mapParentChildPairs(f,obj){
if(isEmpty(obj)){
返回;
}否则{
用于(让项目进入obj){
if(对象hasOwnProperty(项目)){
f(项目,obj[项目]);
已处理[项目]=对象[项目];
mapParentChildPairs(f,obj[项目]);
}
}
}
}
mapParentChildPairs(console.log,数据);

console.log('processed',processed)请添加想要的结果。谢谢您的评论!我已经添加了期望的结果以及当前的结果。您是否尝试过研究顺序树遍历javascript算法?对我来说,结果看起来像给定的数据。区别在哪里?如果您想简单地遍历JSON?使迭代器IIFE在构造过程中生成新的对象结构,然后所有节点都是双向链接的,还包括2个迭代器,可能DepthFirst更直接。但我不明白为什么要处理JSON以再次生成相同的内容??请添加想要的结果。谢谢你的评论!我已经添加了期望的结果以及当前的结果。您是否尝试过研究顺序树遍历javascript算法?对我来说,结果看起来像给定的数据。区别在哪里?如果您想简单地遍历JSON?使迭代器IIFE在构造过程中生成新的对象结构,然后所有节点都是双向链接的,还包括2个迭代器,可能DepthFirst更直接。但我不明白为什么要处理JSON以再次生成相同的内容??