Firebase Cloud Firestore: неверная коллекция. Ссылки на собрания должны иметь нечетное число сегментов

У меня есть следующий код и ошибка:

Invalid collection reference. Collection references must have an odd number of segments

И код:

private void setAdapter() {
        FirebaseFirestore db = FirebaseFirestore.getInstance();
        db.collection("app/users/" + uid + "/notifications").get().addOnCompleteListener(task -> {
            if (task.isSuccessful()) {
                for (DocumentSnapshot document : task.getResult()) {
                    Log.d("FragmentNotifications", document.getId() + " => " + document.getData());
                }
            } else {
                Log.w("FragmentNotifications", "Error getting notifications.", task.getException());
            }
        });
    }

Ответ 1

Иерархические структуры данных и подколлекции описаны в документации. Коллекция содержит документы, а документ может содержать вложенную коллекцию. Структура всегда чередуется с коллекциями и документами. Документация содержит это описание примера:

Обратите внимание на чередующийся шаблон коллекций и документов. Ваши коллекции и документы должны всегда следовать этой схеме. Вы не можете ссылаться на коллекцию в коллекции или документ в документе.

Таким образом, допустимый путь к коллекции всегда будет иметь нечетное количество сегментов; действительный путь к документу, четное число. Поскольку ваш код пытается запросить коллекцию, длина пути четыре недопустима.

Ответ 2

Затем вам нужно изменить это:

db.collection("app/users/" + uid + "/notifications")...

для этого:

db.collection("app").document("users").collection(uid).document("notifications")

Вы приветствуете;)

Ответ 3

Вам не хватает ссылки на коллекцию. т.е. db.collection(** Это становится нулевым **).