Как получить все документы из вложенной базы данных firestore - PullRequest
0 голосов
/ 20 июня 2020

Человек вошел в приложение. У этого человека есть несколько заказов, и эти заказы разделены на подробный обзорный список. К сожалению, этот список на выходе пуст. Как я могу получить значения заказов в подробном обзорном списке?

Моя база данных выглядит следующим образом: Коллекция: Пользователи -> Идентификатор пользователя документа -> Коллекция bestellungen -> Идентификатор документа -> Коллекция geasmtbestellungen.

Мне нужны все документы из gesamtbestellung. У меня есть текущий используемый идентификатор и идентификатор коллекции bestellungen

public void getGesamtbestellung(int bestellnr) {
    final FirebaseFirestore db = FirebaseFirestore.getInstance();
    final FirebaseAuth mAuth = FirebaseAuth.getInstance();

    db.collection("users").document(mAuth.getCurrentUser().getUid()).collection("bestellungen").document().collection("gesamtbestellungen").whereEqualTo("bestellnummer",61)
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        ArrayList<Bestellung> list = new ArrayList<>();
                        //Toast.makeText(getActivity(), "Bestellungen wurden gefunden!", Toast.LENGTH_SHORT).show();
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            //Log.d(TAG, document.getId() + " => " + document.getData());
                            Bestellung best = document.toObject(Bestellung.class);
                            System.out.println("-------------------->" + best.toString());
                            list.add(best);
                        }
                        //System.out.println(list.get(0).toString());

                        //Toast.makeText(getActivity(), "Bestellungen wurden gefunden!", Toast.LENGTH_SHORT).show();
                    } else {
                        //Toast.makeText(getActivity(), "Es ist ein Fehler beim Abrufen der Bestellungen aufgetreten: " + task.getException().toString(), Toast.LENGTH_SHORT).show();
                        //Log.w(TAG, "Error getting documents.", task.getException());
                    }
                }
            });
}

1 Ответ

1 голос
/ 20 июня 2020

Вот ваш запрос:

db
    .collection("users")
    .document(mAuth.getCurrentUser().getUid())
    .collection("bestellungen")
    .document()                             // note the missing document ID here
    .collection("gesamtbestellungen")
    .whereEqualTo("bestellnummer",61)

Обратите внимание, что вы не определили документ в категории «bestellungen». При передаче без аргументов в document() будет сгенерирована ссылка на документ со случайным идентификатором, что почти наверняка гарантирует, что вы ничего не найдете.

Если вы пытаетесь запросить вложенную коллекцию в конкретном документе c, вы будете необходимо предоставить идентификатор этого документа. В путях запросов нет подстановочных знаков.

Если вы пытаетесь запросить все документов в всех вложенных коллекциях, называемых "gesamtbestellungen", вы будете вместо этого нужен запрос группы сбора .

...