2016-09-07 15 views
0

私はNodejsとMySqlを使ってソーシャルアプリケーションを作成しています。 フォロワーという名前のテーブルがあります。フィールドは、フォロワーです。に続いています。ノードjsグラフ検索

のために私の問題を説明し、私はフォロワーテーブル内のいくつかの偽のデータを作成します(フォロワー後)

  1. アミール、レザ

  2. アミール、Meghdad

  3. アミール、バットマン

  4. アミール、デビッド

  5. レザ、ムハンマド

  6. Meghdad、ムハンマド

  7. バットマン、Bastani

  8. ムハンマド、デビッド

  9. Bastani、ジョセフ

これは私が欲しいものを説明のための 'アミール' のネットワークです:私が欲しいもの Graph:

結果:(ユーザーレベル接続):

  1. Reza、0、1

  2. Meghdad、0,1

  3. バットマン、0、1

  4. デビッド、0,2

  5. のMohammad、1、2

  6. Bastani、1,1

  7. ジョセフ、2、1

私はこれをMySqlで実行できませんでしたが、だから私はlevelgraphデータベースを試してみてくださいとそれは私を混乱させてレベルの後に3誰も助けてくれる?

答えて

0

最後に私自身の検索が得る作品:

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); 
関連する問題