前提
- リストFlutterでアプリを作っており、Firestore Databaseと連携しようとしています。
実現したいこと
-
Firestore Databaseにおいて、usersとworksという2つのコレクションを作りました。
-
worksに、managerというフィールドを設け、そこにはusersの中の誰かが入るようにしたいです。
-
usersコレクションにおいて、ドキュメント名がabcdefgのユーザーがあるとします。
-
worksコレクションのmanagerフィールドのタイプの選択の所で「reference」を選び、値に「users/abcdefg」と書きました。
-
アプリの方で、自分自身がmanagerとなっているworksを表示するため、下記のコードを書きました。
dart
body: StreamBuilder<QuerySnapshot>( stream: FirebaseFirestore.instance .collection("works") .where("manager", isEqualTo: Authentication.currentFirebaseUser!) .snapshots(),
- 上記のAuthentication.currentFirebaseUserは、Firebase Authenticationを通じてログインしたユーザーの情報を返しすもので、返り値の型はfirebase_authのUser型です。
発生している問題・エラーメッセージ
- 実行しても、何も表示されず、Invalid argument: Instance of "User"というエラーが出ました。
試したこと
- worksコレクションのmanagerフィールドのタイプの選択で「reference」ではなく「String」を選び、値を「abcdefg」と書き直しました。
- そして、コードを下記のように修正した所、うまく動きました。
dart
body: StreamBuilder<QuerySnapshot>( stream: FirebaseFirestore.instance .collection("works") .where("manager", isEqualTo: Authentication.currentFirebaseUser!.uid) .snapshots(),
- しかし、希望としては、フィールドのタイプはreferenceとしたいです。理由は、各所で、managerから引っ張ってきてそのユーザーに関する情報を使いたいからです。
もし、何かお気づきのことがありましたら、ご教示頂けるとありがたいですm(__)m
0 コメント