2016-08-01 5 views
0

Я пытаюсь получить все рецепты Избраных пользователя с помощью этого кода, но никаких данных не retrivedупорядочивание данных по значению дочернего узла - Firebase

recipesQuery = mDatabase.child("recipes").orderByChild("favoritedBy").equalTo(getId()); 

Это моя структура:

{ 
    "-KNnrgEmF8qCpsWiIMW4" : { 
    "favoriteCount" : 4, 
    "favoritedBy" : { 
     "0ZtxMXZ8iDV4u0POxu8n6cIwCX33" : true 
    }, 
    "name" : "Recipe 1", 
    "recycleCount" : 0, 
    }, 
    "-KNvq6Ts8RYxc0-O3B2t" : { 
    "favoriteCount" : 2, 
    "favoritedBy" : { 
     "0ZtxMXZ8iDV4u0POxu8n6cIwCX33" : true 
    }, 
    "name" : "Recipe 2", 
    "recycleCount" : 0, 
    } 
} 

Если я удалю метод .equalTo(), все данные будут восстановлены, но это не то, что я хочу.

Что я делаю неправильно?

ответ

1

В настоящее время нет способа отфильтровать запрос на основе других объектов, кроме String, Boolean или Double.

То, что я предлагаю, чтобы перестроить свою базу данных что-то вроде этого

{ 
    "users": { 
     "userId1" : { 
      "name" : "User1", 
      "favorites": { 
       "-KNnrgEmF8qCpsWiIMW4" : true, 
       "-KNvq6Ts8RYxc0-O3B2t" : true 
      } 
     }, 
     "userId2" : { 
      "name" : "User2", 
      "favorites": { 
       "-KNvq6Ts8RYxc0-O3B2t" : true 
      } 
     } 
    }, 
    "recipes": { 
     "-KNnrgEmF8qCpsWiIMW4" : { 
      "favoriteCount" : 4, 
      "name" : "Recipe 1", 
      "recycleCount" : 0, 
     }, 
     "-KNvq6Ts8RYxc0-O3B2t" : { 
      "favoriteCount" : 2, 
      "name" : "Recipe 2", 
      "recycleCount" : 0, 
     } 
    } 
} 

Тогда легче получить рецепты Избраных от конкретного пользователя.

mDatabase.child("users").child(userid).child("favorites") 
Смежные вопросы