web-dev-qa-db-ja.com

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

階層的なデータ構造とサブコレクションは ドキュメント で説明されています。コレクションにはドキュメントが含まれ、ドキュメントにはサブコレクションが含まれる場合があります。構造は常にコレクションとドキュメントの交互パターンです。ドキュメントには、この例の説明が含まれています。

コレクションとドキュメントの交互のパターンに注意してください。コレクションとドキュメントは常にこのパターンに従う必要があります。コレクション内のコレクションまたはドキュメント内のドキュメントを参照することはできません。

したがって、コレクションへの有効なパスには常に奇数のセグメントがあります。ドキュメントへの有効なパス、偶数。コードはコレクションを照会しようとしているため、パスの長さ4は無効です。

24
Bob Snyder

次に、これを変更する必要があります。

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

このため:

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

どういたしまして ;)

28
Diego Venâncio