2016-09-24 2 views
0

Firebaseとそのjsonデータベースはかなり新しいです。だから今私はツリー階層を設計していますが、ドキュメントを読むときに "データベースのある場所でデータを取得すると、その子ノードもすべて取得します"と言います。ファイアベース内のユーザグループ別にデータを隔離する方法

私はこれは、あなたがこの

a1 
—b1 
——c1 
——c2 
———d1 
———d2 
———d3 
———d4 
—b2 
——c1 
——c2 
———etc… 

を持っていて、「C1」を取得したい場合は、あなたが「C1」が、「C2」とすべての「D」のではないだけをダウンロードすることを意味していることを理解しています。そしてそれは理にかなっていますが、ドキュメントの例では、すべての "c1"をリストするには "a1"からツリー全体をダウンロードする必要があると言います。

正しいですか?もしそうなら、私はどのように私はユーザーのグループとすべての内部共有情報でデータを分離する必要があるツリーをモデル化できますか?

答えて

1

ツリー内の各ノードにアドレス指定するには、そのノードへの参照を作成します。しかし、ノードの値を取得すると、そのノードの下に各ノードも取得されます。

あなたは/a1/b1にリスナー付けるのであれば:

var root = firebase.database().ref(); 
root.child('a1/b1').on('value', ... 

をあなたはC1、C2、D1、D2、D3およびD4を取得します。

しかし、あなたは直接c1に対処した場合、あなただけの、そのノードを取得します:

root.child('a1/b1/c1').on('value', ... 
+0

ありがとうございました!これは実際には混乱しています。ドキュメントでは、すべての "c1"がチャットの例で "a1"からツリー全体をダウンロードする必要があると言っているからです。しかし、それは私には意味がありません。あなたが言うことはずっと妥当です。 – ed1791

0

は、私はあなたのためにいくつかの素晴らしい例があります。

また、それのすべてが、この場合はポストですダウンロードすることなく、ユーザーの「名前」にアクセスすることはできません。

{ 
    "users": { 
    "user1": { 
     "name": "John", 
     "posts": { 
     "post1": {...}, 
     "post2": {...} 
     } 
    }, 
    "user2": { 
     "name": "Nate", 
     "posts": { 
     "post1": {...}, 
     "post2": {...} 
     } 
    }, 
    "user3": { 
     "name": "Buck", 
     "posts": { 
     "post1": {...}, 
     "post2": {...} 
     } 
    } 
    } 
} 

Denormalize優れたデータ照会およびフェッチのためのデータベース:

{ 
    "users": { 
    "user1": { 
     "name": "John", 
     "posts": { 
     "post2": true, 
     "post5": true 
     } 
    }, 
    "user2": { 
     "name": "Nate", 
     "posts": { 
     "post1": true, 
     "post6": true 
     } 
    }, 
    "user3": { 
     "name": "Buck", 
     "posts": { 
     "post3": true, 
     "post4": true 
     } 
    } 
    }, 
    "posts":{ 
    "post1":{ 
     ..., 
     "user":"user2" 
    }, 
    "post2":{ 
     ..., 
     "user":"user1" 
    }, 
    "post3":{ 
     ..., 
     "user":"user3" 
    }, 
    "post4":{ 
     ..., 
     "user":"user3" 
    }, 
    "post5":{ 
     ..., 
     "user":"user1" 
    }, 
    "post6":{ 
     ..., 
     "user":"user2" 
    }, 
    } 
} 
関連する問題