プログラミング

【Flutter】FirestoreでwhereとorderByを同時に実行したい

Firebaseで下記のような複数のフィールドに対してwhereやorderByを行うクエリ(複合クエリ)を投げる場合、複合インデックスを作成していないといけません。

FirebaseFirestore.instance
  .collection("post")
  .where("uid", isEqualTo: user.uid)
  .orderBy("timestamp", descending: true)
  .snapshots()

複合インデックスは、Firestoreの設定画面で簡単に作成できます。
早速やってみましょう!

複合インデックスの追加画面を開く

firebaseで対象プロジェクトのコンソールを開き
「Cloud Firestore」 → 「インデックス」 → 「複合」 → 「インデックスを追加」の順にクリックし、インデックスの追加画面を開きます。

複合インデックスを追加する

表示されたダイアログに複合インデックスの情報を記入し、インデックスを作成ボタンをクリックします。

追加後にindexが作成されるまでしばらく時間がかかります。

完了すると、FlutterからwhereとorderByを同時に実行できるようになります。

  • この記事を書いた人
  • 最新記事

おみ

プログラミング学習やキャリアのことを発信していきます。【経歴】1999年生まれ。専門学校卒業後、大手企業やベンチャー企業でSEとして勤務。現在は某メガベンチャーでFlutterエンジニアとして働いています。

-プログラミング
-, ,