Я пытаюсь построить рекурсивную форму структуры из данных, хранящихся в таблице mysql, на которую ссылаются сами, это означает, что некоторые строки могут стать родителями для других, и это демонстрационные данные, которые у меня есть 
полученное дерево должно быть деревом, которое показывает отношения между ребенком и родителями с моим кодом, который мне удалось создать
проблема в том, что bio4 не хватает своего потомка bio5, я думаюпроблема в том, что когда у нас есть два родительских супруга на одном и том же уровне, первый работает правильно, но когда рекурсия заканчивается и возвращается к другим уровням, родительский подуровень становится нулевым, это мой код, пока что в моем основном маршруте в экспрессея также использовал модули knex.js и accesscontrol.js
router.get('/',async function (req, res, next) {
const permission = ac.can(req.user.role).readAny("test");
if (!permission.granted)
res.status(401).send("Insufficient Permission");
testgroups = await db(`servicegroups`).select("*","ServiceGroupId AS id","Name AS text ",db.raw(`(SELECT "root" ) AS type`) ).where("ServiceGroupType", '=', 2).andWhere("ParentId", '=', 0).andWhere("Deleted",'=',0).select();
var result = [];
for(i in testgroups){
result.push(testgroups[i])
await global.getTestChildrens(testgroups[i], db);
}
res.render("admin/lis/tests/tests",{user:req.user , data:{testgroups:JSON.stringify(result) } })
});
также основная функция похожа на это Примечание: глобальная переменная - это просто глобальная переменная, которую я использую в своей системе, в которой есть пара важных функцийиз них - рекурсивная функция, а db - просто экземпляр knex моей базы данныхион
global.getTestChildrens =async function (entity,db) {
childs = await db('servicegroups').select("*", "ServiceGroupId AS id", "Name AS text ", db.raw(`(SELECT "subroot" ) AS type`)).where("ParentId", '=', entity.ServiceGroupId).andWhere("Deleted", '=', 0);
if(childs.length>0){
entity.children = childs;
}else{
entity.type = "leaf";
}
for(i in childs){
if (childs[i]){
await global.getTestChildrens(childs[i], db);
}else{
console.log("undifened found :"+i)
}
}
return entity;
}