Firebaseで下記のような複数のフィールドに対してwhereやorderByを行うクエリ(複合クエリ)を投げる場合、複合インデックスを作成していないといけません。
FirebaseFirestore.instance
.collection("post")
.where("uid", isEqualTo: user.uid)
.orderBy("timestamp", descending: true)
.snapshots()
複合インデックスは、Firestoreの設定画面で簡単に作成できます。
早速やってみましょう!
複合インデックスの追加画面を開く
firebaseで対象プロジェクトのコンソールを開き
「Cloud Firestore」 → 「インデックス」 → 「複合」 → 「インデックスを追加」の順にクリックし、インデックスの追加画面を開きます。
![](https://efferite.com/wp-content/uploads/2023/07/add_index-1-1024x564.png)
複合インデックスを追加する
表示されたダイアログに複合インデックスの情報を記入し、インデックスを作成ボタンをクリックします。
![](https://efferite.com/wp-content/uploads/2023/07/create_index-832x1024.png)
追加後にindexが作成されるまでしばらく時間がかかります。
完了すると、FlutterからwhereとorderByを同時に実行できるようになります。
![](https://www11.a8.net/0.gif?a8mat=3TCZ0H+8BH22A+40EC+601S1)