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

я есть следующий код и получаю ошибку:

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());
            }
        });
    }

Ответы на вопрос(3)

Решение Вопроса

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

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

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

 Bob Snyder09 окт. 2017 г., 15:33
@Reim: Консоль поддерживает создание желаемой структуры.
 Chris27 апр. 2018 г., 22:41
Не то чтобы кто-то еще был настолько глуп, чтобы пропустить это, но есть еще один простой способ, с помощью которого вы можете получить эту ошибку, если вы запустите get для пустой ссылки на документ, поэтому проверьте свою переменную и убедитесь, что она не является пустой строкой. ,
 Relm09 окт. 2017 г., 08:07
Хорошо, мне нужно что-то вроде этого: app / users / userId / notifications / {auto-gen-id} / document (объект уведомления). Как мне создать такую ​​вещь в консоли или с помощью кода?

тся нулевым **).

Тогда вам нужно изменить это:

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

за это:

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

Пожалуйста ;)

Ваш ответ на вопрос