Because what you have here is a doubly linked tree, you have a choice how you want to populate the tree. I think it would be easier attaching children to their parents.
What I would do is:
Create a lookup map, to efficiently get a document of a given id
For every document, create an empty array field simply called children (it's because the name childrenID suggest, that it has something to do with ID, not the children themselves)
For every document in the original collection, retrieve the document with the id parentID from the lookup map and push it at the end of the children array
Create an array for result nodes: those documents that have parentID: null. You could use .filter for this.
For better efficiency, you could bundle points 2, 3 and 4 into one.
Good luck!
Top comments (2)
Because what you have here is a doubly linked tree, you have a choice how you want to populate the tree. I think it would be easier attaching children to their parents.
What I would do is:
children
(it's because the name childrenID suggest, that it has something to do with ID, not the children themselves)parentID
from the lookup map and push it at the end of thechildren
arrayparentID: null
. You could use.filter
for this.For better efficiency, you could bundle points 2, 3 and 4 into one.
Good luck!
I FOUND A SOLUTION - jsfiddle.net/cw9rq7ht/6/