次のコードがあり、エラーが発生します:
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());
}
});
}
階層的なデータ構造とサブコレクションは ドキュメント で説明されています。コレクションにはドキュメントが含まれ、ドキュメントにはサブコレクションが含まれる場合があります。構造は常にコレクションとドキュメントの交互パターンです。ドキュメントには、この例の説明が含まれています。
コレクションとドキュメントの交互のパターンに注意してください。コレクションとドキュメントは常にこのパターンに従う必要があります。コレクション内のコレクションまたはドキュメント内のドキュメントを参照することはできません。
したがって、コレクションへの有効なパスには常に奇数のセグメントがあります。ドキュメントへの有効なパス、偶数。コードはコレクションを照会しようとしているため、パスの長さ4は無効です。
次に、これを変更する必要があります。
db.collection("app/users/" + uid + "/notifications")...
このため:
db.collection("app").document("users").collection(uid).document("notifications")
どういたしまして ;)