Hello

Je galère un peu avec un petit programme que j'essaie d'écrire en javascript (nodeJS) pour imprimer un "arbre" qui s'apparente à une structure de dossiers/fichiers.
Cette structure est stockée en base de donnée (mySQL).

J'ai une table avec ces champs :
- id
- name
- type (file ou folder. Quand c'est un folder : je veux aller chercher les sous-folders et sous-fichiers).
- parent_id

Je ne peux pas sortir toute la table d'un coup (trop d'entrées). J'essaie donc de faire ça récursivement. (Dans mon application, je ne commencerai pas avec level=0, mais à partir d'un sous-niveau donné par ailleurs)


Voici ce que j'ai pour l'instant ("db" est juste un objet qui se connecte à ma base) :
Code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
    function getFileInformation(db,parent_id) {
    return new Promise(function(resolve,reject) {
     db.query(
      'select * from files where parent_id=? ',
      [parent_id],
      function (err, rows, fields) {
       if(err!==null) console.log(err);
       resolve(JSON.parse(JSON.stringify(rows)));
      }
     );
    });
    }
    function parseTree(db,parent_id,level) {
    return new Promise(function(resolve,reject) {
     let output="";
     getFileInformation(db,parent_id)
     .then(function(rows) {
      for(let i=0;i<rows.length;i++) {
       //indent
       for(let j=0;j<level;j++) output+=' ';
       output+=rows[i].name+"\n";
       if(rows[i].type=='folder') {
        parseTree(db,rows[i].id,level+1)
        .then(function(out) {
         output+=out;
        });
       }
      }
      resolve(output);
     });
    });
    }
    parseTree(db,0,1)
    .then(function(out) {
    console.log(out);
    });

Quand je lance ce code, ça ne m'imprime que le niveau 0. Ca semble descendre dans les sous-niveaux, mais ça ne retourne rien dans mes variables out/output.

(je suis un peu noob en JS, et pas bien à l'aise avec la syntax async/await, etc).

Merci !