Запрос и обновление дочерних параметров внутри дочерних - PullRequest
0 голосов
/ 04 мая 2018

Текущая структура базы данных Firebase:

Current Firebase DB Structure

Чего я пытаюсь достичь:

  • Поиск во всех моих "рекламных акциях" ребенка во всех моих местах для купона, равного чему-то.
  • Если найдено, обновите его параметр «limit», уменьшив его на -1

Мой текущий код:

    mDatabase = FirebaseDatabase.getInstance().getReference("Place");
    Query query = mDatabase.child("promotions").orderByChild("coupon").equalTo("FREEBIGMAC");
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
                // Not able to find anything here

            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            System.out.println("The read failed: " + databaseError.getMessage());
        }
    });

Я пытался найти подобный пример в StackOverFlow, но не смог найти точный случай. Буду очень признателен за вашу помощь!

1 Ответ

0 голосов
/ 05 мая 2018

База данных Firebase может запрашивать свойства только по известному пути под каждым дочерним узлом того места, где вы выполняете запрос. Он не может обрабатывать динамические пути, как вы пытаетесь сделать здесь.

Более подробное объяснение этого см. В моем ответе здесь: Запрос Firebase Double Nested . Это также кажется уместным: Запрос Firebase, если child of child содержит значение .

Решение состоит в том, чтобы денормализовать ваши данные и снять рекламные акции с мест. Если у вас есть один список рекламных акций, вы можете получить всех, у кого есть бесплатный биг-мак:

mDatabase = FirebaseDatabase.getInstance().getReference("Promotions");
Query query = mDatabase.orderByChild("coupon").equalTo("FREEBIGMAC");
query.addListenerForSingleValueEvent(new ValueEventListener() {

Теперь, если вы добавите Place к каждой акции, вы сможете показать все места, в которых есть бесплатные большие маки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...