как перейти с firestore на базу данных в реальном времени - PullRequest
0 голосов
/ 26 мая 2019

Привет, я конвертирую Firestore в FirebaseDatabase, я могу сделать большую часть конвертации, кроме той, с которой я столкнулся.Я застрял в .getdocuments и Documentchanges.Я думаю .getdocuments это .getchildren?Я не знаю, что эквивалентно Documentchanges в базе данных в реальном времени.Пожалуйста помоги.Заранее спасибо!

вот код, который я хочу конвертировать

 firestore.collection("Users")
            .get()
            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

                    if (!queryDocumentSnapshots.getDocuments().isEmpty()) {

                        for (final DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {
                            if (doc.getType() == DocumentChange.Type.ADDED) {

                                if (!doc.getDocument().getId().equals(mAuth.getCurrentUser().getUid())) {
                                    Friends friends = doc.getDocument().toObject(Friends.class).withId(doc.getDocument().getString("id"));
                                    usersList.add(friends);
                                    usersAdapter.notifyDataSetChanged();
                                    refreshLayout.setRefreshing(false);
                                }

                            }
                        }

                        if(usersList.isEmpty()){
                            refreshLayout.setRefreshing(false);
                            mView.findViewById(R.id.default_item).setVisibility(View.VISIBLE);
                        }

                    }else{
                        refreshLayout.setRefreshing(false);
                        mView.findViewById(R.id.default_item).setVisibility(View.VISIBLE);
                    }

                }
            })

1 Ответ

0 голосов
/ 26 мая 2019

В базе данных реального времени нет прямого эквивалента.

Цель documentChanges - узнать, какие изменения в наборе результатов запроса по сравнению с последним временем получения результатов . Это действительно относится только к тем случаям, когда вы используете слушателя для получения обновлений в реальном времени (чего вы здесь не делаете). Если вы хотите узнать об изменениях DataSnapshot по сравнению с предыдущим DataSnapshot, полученным в прослушивателе, вам придется это выяснить самостоятельно.

Но это не относится к делу. Ваш код Firestore здесь излишне использует изменения документа, чтобы получить список документов из одного набора результатов, которые не обновляются в режиме реального времени. Если вы не используете прослушиватель в реальном времени, то documentChanges на самом деле не совсем подходит для использования. Каждый документ будет отображаться как «ДОБАВЛЕНО». Для одного набора результатов запроса вы должны просто перебрать список, возвращаемый queryDocumentSnapshots.getDocuments().

Эквивалент getDocuments() для базы данных реального времени DataSnapshot просто getChildren () , что даст вам возможность перебирать дочерние узлы.

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