Возникли проблемы с получением дочерних узлов с помощью запроса.
Вот моя структура данных:
![Firebase Structure](https://i.imgur.com/vkHkgtr.jpg)
Мне удалосьуспешно запросить и получить данные, используя узел, выделенный «1» на изображении выше.Вот мой код:
databaseRecipes = FirebaseDatabase.getInstance().getReference().child("recipe");
Query query = databaseRecipes.orderByChild(userId).equalTo(true);
query.addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if(dataSnapshot.exists())
{
Toast.makeText(getApplicationContext(), "Results found!", Toast.LENGTH_LONG).show();
arrayList.clear();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())
{
Recipe recipe = dataSnapshot1.getValue(Recipe.class);
arrayList.add(recipe);
}
final RecipeAdapter recipeAdapter = new RecipeAdapter(getApplicationContext(), arrayList);
recyclerView.setAdapter(recipeAdapter);
recipeAdapter.notifyDataSetChanged();
}
else
{
// Toast.makeText(getApplicationContext(), "No retreivable results :(", Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), userId, Toast.LENGTH_LONG).show();
}
}
Однако я бы предпочел хранить все «избранное» вместе под своим отдельным узлом, как показано, выделено «2».(Там есть только один ребенок для целей тестирования, на практике их будет гораздо больше, поэтому было бы лучше сделать это таким образом.)
Используя этот код:
Query query = databaseRecipes.child("favourite").orderByChild(userId).equalTo(true);
IТакже пытались изменить ссылку на:
databaseRecipes = FirebaseDatabase.getInstance().getReference().child("recipe").child("favourite");
И запрос:
Query query = databaseRecipes.orderByChild(userId).equalTo(true);
Но в любом случае не получается никаких результатов.Я думаю, моя проблема в том, чтобы спросить детей из DataSnapshot
:
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())
Но я целый день ходил кругами в кругу, пытаясь найти альтернативу (я думаю, что упускаю что-то очень простое- что еще более раздражает!), поэтому любая помощь будет принята с благодарностью.
Заранее извиняюсь за мои ужасные навыки рисования!
Редактировать
Если кто-то еще сталкивался с этим новичком в Firebase из фона SQL, Алекс дал твердую оценку.совет.
Создан новый узел:
![New Data Structure](https://i.stack.imgur.com/BCIJy.jpg)
Код для запроса узла -
Ссылка на базу данных:
databaseFvourites = FirebaseDatabase.getInstance().getReference().child("favouriteRecipes").child(userId);
Запрос:
Query query = databaseFvourites.orderByChild(userId).equalTo(true);
Структура данных, вероятно, может быть улучшена еще больше, но для моих нужд она отлично работает.