我有以下代码并收到错误:
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());
}
});
}
答案 0 :(得分:28)
然后你需要改变这个:
git rebase
为此:
db.collection("app/users/" + uid + "/notifications")...
欢迎你;)
答案 1 :(得分:24)
the documentation中描述了分层数据结构和子集合。集合包含文档,文档可能包含子集合。结构始终是集合和文档的交替模式。该文档包含一个示例的描述:
注意集合和文档的交替模式。您的 集合和文档必须始终遵循此模式。你不能 引用集合中的集合或文档中的文档。
因此,集合的有效路径将始终具有奇数个段;文档的有效路径,偶数。由于您的代码正在尝试查询集合,因此路径长度为4是无效的。
答案 2 :(得分:1)
我提供了错误的entity_Id时遇到了此问题。
代替dojo/default/datasets/fe67ec58-6208-4234-a4ee-98c5dce4665f
,
我提供了fe67ec58-6208-4234-a4ee-98c5dce4665f
,现在工作正常。
答案 3 :(得分:0)
您缺少集合参考。 即db.collection(**这将变为空**)。
答案 4 :(得分:0)
当我尝试读取documentReference(DocumentReference docRef2 = fireStoreDb.Collection(“ Ass”)。Document)时,当我提供一个包含“ /”字符(我的值为N / A)的Entity_Id时,遇到了此问题。 (ass.Tel.ToString()) .Collection(“ vehicules”)。Document(ve.Immatriculation);)。 在这里,值ve.Immatriculation等于N / A,这就是问题所在。