gpt4 book ai didi

node.js - 创建mongodb对象的思维导图

转载 作者:可可西里 更新时间:2023-11-01 10:48:45 28 4
gpt4 key购买 nike

我想从具有“父”和“子”值的模型分支制作类似思维导图的东西。看起来像:

Branches = [{
children: {},
_id: String,
parent: { type: Schema.Types.ObjectId, ref: 'Branch' }
}]

我想得到类似的东西:

[
{
"_id": "599c1f79f339dc3991d8250a",
"name": "Robert",
"children": [
{
"_id": "599c1f82f339dc3991d8250b",
"name": "Robert 1",
"parent": "599c1f79f339dc3991d8250a",
"children": [
{
"_id": "599c1f8ff339dc3991d8250c",
"name": "Robert 2",
"parent": "599c1f82f339dc3991d8250b",
"children": [
{
"_id": "599c2b7373a7d43e5205af1f",
"name": "Robert 4",
"parent": "599c1f8ff339dc3991d8250c",
"__v": 0,
"shareholder": [],
"createdDate": "2017-08-22T13:02:43.290Z",
"children": []
}
],
"__v": 0,
"shareholder": [],
"createdDate": "2017-08-22T12:11:59.230Z"
},
{
"_id": "599c1f9df339dc3991d8250d",
"name": "Robert 3",
"parent": "599c1f82f339dc3991d8250b",
"children": [],
"__v": 0,
"shareholder": [],
"createdDate": "2017-08-22T12:12:13.156Z"
}
],
"__v": 0,
"shareholder": [],
"createdDate": "2017-08-22T12:11:46.938Z"
}
],
"__v": 0,
"parent": null,
"shareholder": [],
"createdDate": "2017-08-22T12:11:37.005Z"
}

]"

如果一个对象的值是 parent "1 ",那么 _id : "1"的分支必须在 children 对象中有他。我现在的代码是:

Branch.find((err, foundedBranches) => {

function createTree(branch) {
function inner(parent) {
return branch.filter(x => x.parent === parent)
.map(x => {
x.children = inner(x._id)
return x
})
}
return inner(null)
}
let formated = createTree(branches)
res.json(formated)

如果您知道我该如何解决,请帮忙:/

最佳答案

像这样的事情怎么样 - 你会为每个条目得到 child

// All items from database
const dataFromDatabase = // ...

// For each item, go and look for childrens
const finalMap = dataFromDatabase.map((x) => {
children: this.getChildren(dataFromDatabase, x._id),
_id: x._id,
// ...
});

// Get all children and for theses children go for children aswell (recursive)...
getChildren(all, id) {
return all.reduce((tmp, x) => {
if (x.parent === id) {
return [
...tmp,
{
children: this.getChildren(all, x._id),
_id: x._id,
// ...
},
];
}

return tmp;
}, []);
}

如果您希望条目只出现一次,请在开始时过滤条目以仅获取头部(没有父条目的条目)

dataFromDatabase.filter(x => !x.parent).map((x) => {

关于node.js - 创建mongodb对象的思维导图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46071374/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com