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(** Это становится нулевым **).