Цикл по Firestore, чтобы получить идентификаторы документов - PullRequest
0 голосов
/ 06 марта 2019

Привет. Я пытаюсь получить весь идентификатор пользователя и сохранить его в списке массивов.

Вот моя коллекция

enter image description here

вот мой код:

` firebaseFirestore = FirebaseFirestore.getInstance();
Query firstQuery=firebaseFirestore.collection("Users");
firstQuery.addSnapshotListener(getActivity(),new EventListener<QuerySnapshot>() {
    @Override
    public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
            lastVisible=documentSnapshots.getDocuments()
                    .get(documentSnapshots.size() -1);
        for (DocumentChange doc : documentSnapshots.getDocumentChanges()) {
            if (doc.getType() == DocumentChange.Type.ADDED) {

                String blogPostId=doc.getDocument().getId();

                ArrayList.add(doc.getDocument());         }


    }
});`

Я довольно новичок в Firebase.Спасибо

1 Ответ

0 голосов
/ 06 марта 2019

Вы должны попытаться изменить структуру вашей пользовательской модели, добавить поле user_id в вашей пользовательской модели и сопоставить его так, чтобы оно было равно Uid, сгенерированному Firebase. Затем убедитесь, что при создании пользователем вашего документа идентификатор будет равен вашему идентификатору пользователя затем вы можете получить его и сохранить в ArrayList. Я напишу логику, остальное должно быть легко для вас реализовать.

                        //implementing user model in registration



                        //getting the database reference
                        FirebaseFirestore mDb = FirebaseFirestore.getInstance();

                        Users user = new User();
                        user.setUser_id(FirebaseAuth.getInstance().getUid());
                        FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
                                .build();
                        mDb.setFirestoreSettings(settings);
                        // we make sure that the document id is equal to user id
                        DocumentReference newUserRef = mDb
                                .collection("Users")
                                .document(FirebaseAuth.getInstance().getUid());

                        newUserRef.set(user).addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {


                              }
                       });

Тогда в вашей деятельности:

    ArrayList<Users> listUsers = new ArrayList<>();

    //getting the database reference
    FirebaseFirestore mDb = FirebaseFirestore.getInstance();


    CollectionReference reference =  mDb.collection(Users);
    //Retrieving the data from the database
    reference.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
                //We specify that we want the id and add it to the arrayList
                for (QueryDocumentSnapshot document : task.getResult()) {

                    Users users = document.toObject(Users.class);
                    listUSers.add(user.getId());


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