Я пытаюсь сгенерировать массив со структурированным результатом MySQL
Структура BD с n-дочерним элементом:
-id
-title
-parent_id
Моя рекурсивная функция с обещанием:
let recursiveFindCat = (id) =>{
return new Promise(function(resolve, reject) {
getChild(id);
function getChild(id_c) {
connections.getConnection(function(err, c){
c.query("SELECT * FROM widgets WHERE parent_id='"+id_c+"'", function(error, results, fields) {
let array_tmp = Array();
if(results.length>0) {
results.forEach(function (item) {
array_tmp.push({
'id': item.id,
'title': item.title,
'childs': getChild(item.id)
});
});
console.log(array_tmp);
return array_tmp;
}else{
return resolve(array_tmp);
}
});
});
}
}); };
Я проверяю функцию следующим образом:
recursiveFindCat(0).then(function(ret_array){
console.log(ret_array);
});
GetChild внутри массива всегда возвращает неопределенное значение, я думаю, это потому, что в асинхронной операции я пытался вставить обещание, просто снова вызывая recursiveFindCat, но это не сработало.
Есть способ решить эту проблему с помощью Promise?