2016-09-24 1 views
0

Я довольно новичок в Firebase и его базе данных json. Поэтому сейчас я разрабатываю иерархию деревьев, но при чтении документации говорится, что «когда вы извлекаете данные в месте в своей базе данных, вы также извлекаете все дочерние узлы».Как изолировать данные по группам пользователей в firebase

Я понимаю, что это означает, что если у вас есть этот

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» s должны загружать все дерево из «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" 
    }, 
    } 
} 
Смежные вопросы