2016-09-24 4 views
1

В Firebase docs for Structuring Data они предоставляют следующую структуру данных в качестве примера сопоставления пользователей с группами.Фильтрация списков на основе вложенных дочерних ключей на основе Firebase?

{ 
    "users": { 
    "alovelace": { 
     "name": "Ada Lovelace", 
     // Index Ada's groups in her profile 
     "groups": { 
     // the value here doesn't matter, just that the key exists 
     "techpioneers": true, 
     "womentechmakers": true 
     } 
    }, 
    ... 
    }, 
    "groups": { 
    "techpioneers": { 
     "name": "Historical Tech Pioneers", 
     "members": { 
     "alovelace": true, 
     "ghopper": true, 
     "eclarke": true 
     } 
    }, 
    ... 
    } 
} 

С этой структурой, как я могу запросить только группы с определенным членом? Так, например, только группы, где alovelace.

Могу ли я сделать это с правилом? Если да, то каково это правило?

ответ

1

Эта информация уже в модели данных. Прямо под /users/alovelace/groups у вас есть список групп, в которых она участвует.

Причиной рекомендации этой модели является то, что для загрузки списка групп даже не требуется запрос для загрузки, просто требуется чтение с прямым доступом /users/alovelace/groups.

+0

Да, но это список групповых клавиш. Не особенно полезно для конечного пользователя. Как получить фактические группы? – nicholas

+0

Вы прокручиваете ключи, а затем поочередно загружаете/синхронизируете их из '/ groups/'. Чтобы узнать, почему это не так медленно, как вы можете изначально думать: http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead -of-OBSE/35932786 # 35932786 –

2

OrderByChild работает в данном случае - ниже объекта запроса

angularfire.database.list('.../groups', { 
    query: { 
     orderByChild: 'members/alovelace'+, 
     startAt: true 
    } 
    }); 

Не уверен, как производительность по сравнению с ответом Франк ван Puffelen - может быть даже хуже, так как это еще один список запросов, а не только несколько прямой поиск объектов.

Смежные вопросы