Создайте результат Tree с Node.JS и MySQL, используя Promise - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь сгенерировать массив со структурированным результатом 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...