2016-09-07 4 views
0

Ich erstelle eine soziale Anwendung mit Nodejs und MySql. Ich habe eine Tabelle mit dem Namen Follower. Die Felder sind: Follower und Folgende.Knoten js Graph Suche

Für mein Problem erklären, mache ich einige gefälschte Daten in Verfolger Tabelle: (Follower, Nach)

  1. Amir Reza

  2. Amir, Meghdad

  3. Amir, Batman

  4. Amir, David

  5. Reza, Mohammad

  6. Meghdad, Mohammad

  7. Batman, Bastani

  8. Mohammad, David

  9. Bastani, Joseph

Diese

ist ein Netzwerk von 'Amir' für erklären, was ich will: Graph:

Ergebnis, was ich will: (Benutzer, Ebene, Anschlüsse):

  1. Reza, 0, 1

  2. Megdad, 0, 1

  3. Batman, 0, 1

  4. David, 0, 2

  5. Mohammad, 1, 2

  6. Bastani, 1, 1

  7. Joseph, 2, 1

Ich konnte dies nicht mit MySql tun, also versuche ich die levelgraph Datenbank und es ist verwirrt in Level s nach 3. Kann mir jemand helfen?

Antwort

0

schließlich meine eigene Suche erhalten Werke:

let getNetwork = (user, maxLevel = 5)=>{ 
    let getLevel = (user, level)=>{ 
     return new Promise((resolve, reject)=>{ 
      let search = []; 
      for(let i = 0; i < level; i++){ 
       search.push(
        { 
         subject: db.v(i), 
         object: db.v((i+1)) 
        } 
       ); 
      } 
      search[0].filter = obj => obj.subject == user && !(level > 1 && obj.trust < 1); 
      db.search(search, (error, results)=>{ 
       resolve(Object.keys(results).map(i=> 
        Object.keys(results[i]).map(j=> 
         results[i][j] 
        ) 
       )); 
      }); 
     }); 
    } 
    return new Promise((resolve, reject)=>{ 
     let ret = []; 
     let getLevels = function (i=1){ 
      if(i > maxLevel){ 
       resolve(ret); 
      } 
      else{ 
       getLevel(user, i).then((lvlX)=>{ 
        ret = ret.concat(lvlX); 
        getLevels(i+1); 
       }); 
      } 
     } 
     getLevels(); 

    }); 
} 
getNetwork('Amir').then(console.log);