Получить данные, используя несколько ключей Firebase Realtime Database - PullRequest
0 голосов
/ 27 апреля 2018

enter image description here У меня есть список ключей в массиве. Я хочу получать данные только с этих ключей, но одновременно.

      DatabaseReference mDBRef;

      List<String> keys = new ArrayList<>();

Я пробовал это с циклом, но результат, приходящий в класс Model, повторяется 2 раза.

            for (int i= 0;i<keys.size();i++)
            {
                String id = keys.get(i);
                Log.d("Keys",id);
                mDBRef = FirebaseDatabase.getInstance().getReference().child("Gyms").child(id);


                mDBRef.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(final DataSnapshot dataSnapshot) {

                        dataSnapshot.getKey();
                         gyms = dataSnapshot.getValue(Gyms.class);


                        if (gyms != null)
                        {
                            Log.d("Names",gyms.getName());

                            Toast.makeText(NearMeActivity.this, ""+ gyms.getName(), Toast.LENGTH_SHORT).show();

                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
            }

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

База данных Firebase Realtime не поддерживает загрузку элементов на основе массива значений. Вам придется загружать каждый элемент отдельным звонком.

Хотя это может запутать ваш код, он не такой медленный, как думает большинство разработчиков. Это потому, что Firebase передает запросы. Для более подробного объяснения этого см. Мой ответ здесь: http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786

0 голосов
/ 27 апреля 2018

база данных Firebase в реальном времени не поддерживает несколько совпадений. Вы можете увидеть Firestore, который является NoSQL и обеспечивает некоторую гибкость. Смотреть Firestore: https://firebase.google.com/docs/firestore/

Вы должны использовать специальное решение для поиска, например Elastic Search.

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