Android

Firebase Cloud Firestore : Invalid collection reference. Collection references must have an odd number of segments

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

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

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

вместе с этим:

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

Добро пожаловать ;)

--ОБНОВЛЕНИЕ 2023--

Если вы используете новый модуль Firebase, то помните о ссылке:

Firebase требует изменения ссылок: "collectionName" / "DocumentName" / "collectionName" / "documentId" и т.д.

setDoc(doc(db, "collectionName", userID, "anotherCollectionName", documentID), ...

или

addDoc(collection(this.firestore, "collectionName", documentID), data);

ссылка

Ответ 2

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


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


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

Ответ 3

У вас отсутствует ссылка на коллекцию. т.е. db.collection (** Значение становится равным нулю **).

Ответ 4

Я столкнулся с этой проблемой, когда указал неверный entity_Id.

Вместо dojo/default/datasets/fe67ec58-6208-4234-a4ee-98c5dce4665fя предоставил fe67ec58-6208-4234-a4ee-98c5dce4665fи теперь работает нормально.

2023-11-29 20:23 java android firebase google-cloud-firestore