[英]How to increment and add the new ID to a new node in a Json array tree structure using Nodejs
[英]transform file/directory structure into 'tree' in vue json, how can add new field to new json type?
将文件/目录结构转换为 vue json 中的“树”
我有一个看起来像这样的对象数组:
[
{
"name": "Officer",
"fid": "123",
"isDirectory": true,
"path": "Officer/EventReport/SelfReport/110-04-02/RCBS.pdf"
},
{
"name": "Officer",
"fid": "456",
"isDirectory": true,
"path": "Officer/EventReport/SelfReport/110-04-10/1100_b.pdf"
},
{
"name": "Officer",
"fid": "875",
"isDirectory": true,
"path": "Officer/S_Meeting/W_Meeting/110-5/Officer_from.docx"
},
{
"name": "Officer",
"fid": "851",
"isDirectory": true,
"path": "Officer/S_Meeting/W_Meeting/110-5/16200.jpg"
},
{
"name": "Officer",
"fid": "510",
"isDirectory": true,
"path": "Officer/S_Meeting/W_Meeting/110-5/2021-05-18_2342.png"
}
]
可能有任意数量的任意路径,这是遍历目录中的文件和文件夹的结果。
我想要做的是确定这些的“根”节点。 最终,这将存储在 mongodb 中并使用物化路径来确定它的关系。
我希望我能展示这个。
[
{
"name": "Officer",
"isDirectory": true,
"items": [
{
"name": "EventReport",
"isDirectory": true,
"items": [
{
"name": "SelfReport",
"isDirectory": true,
"items": [
{
"name": "2020-110-04-02",
"isDirectory": true,
"items": [
{
"name": "RCBS.pdf",
"fid": "123",
"isDirectory": false
}
]
},
{
"name": "2020-110-04-10",
"isDirectory": true,
"items": [
{
"name": "1100_b.pdf",
"fid": "456",
"isDirectory": false
}
]
}
]
}
]
},
{
"name": "SecurityMeeting",
"isDirectory": true,
"items": [
{
"name": "SecurityWorkMeeting",
"isDirectory": true,
"items": [
{
"name": "2021-05-SecurityWorkMeeting",
"isDirectory": true,
"items": [
{
"name": "Officer_Report.docx",
"fid": "875",
"isDirectory": false
},
{
"name": "16200.jpg",
"fid": "851",
"isDirectory": false
},
{
"name": "2021-05-18_2342.png",
"fid": "510",
"isDirectory": false
}
]
},
]
}
]
}
]
},
]
这是我的代码,但我不知道如何添加 fid 字段,我尝试了更多方法,但都无法正常工作。
let arr = xhr.data.result[0].UploadFile;
var tree = {};
arr.forEach((item) => {
//debugger;
let tokens = item.path.replace(/^\/|\/$/g, "").split("/");
let current = tree;
for (let i = 0; i < tokens.length; i++) {
if (!current[tokens[i]]) {
current[tokens[i]] = {};
}
current = current[tokens[i]];
}
});
const parseNode = function (node) {
return Object.keys(node).map((key) => {
//debugger;
if (Object.keys(node[key]).length === 0) {
return {
isDirectory: false,
name: key,
};
}
return {
isDirectory: true,
name: key,
items: parseNode(node[key]),
};
});
};
objectProvider._data[0].items = parseNode(tree);
像这样修改
let arr = xhr.data.result[0].UploadFile;
var tree = {};
arr.forEach((item) => {
//debugger;
let tokens = item.path.replace(/^\/|\/$/g, "").split("/");
let current = tree;
for (let i = 0; i < tokens.length; i++) {
if (!current[tokens[i]]) {
current[tokens[i]] = {fid: item.fid};
}
current = current[tokens[i]];
}
});
const parseNode = function (node) {
return Object.keys(node).map((key) => {
const { fid } = node[key];
delete node[key].fid;
if (Object.keys(node[key]).length === 0) {
return {
isDirectory: false,
name: key,
fid,
};
}
return {
isDirectory: true,
name: key,
fid,
items: parseNode(node[key]),
};
});
};
objectProvider._data[0].items = parseNode(tree);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.