🦔
CollectionGroupで同名の collection をまとめて取得して、そこからのwhereで詰まった
タイトルにあるようにCollectionGroupで同名の collection をまとめて取得して、そこからのwhere('xx', isEqualTo:'xx').get();的なことをしようとしたら
operation was rejected because the system is not in a state required for the operation's execution. if performing a query, ensure it has been indexed via the firebase console.
って怒られて結構困ったので、その解決方法を書きたいと思います。
怒られた記述↓↓↓
final result =
await FirebaseFirestore.instance.collectionGroup('masks').where('imageUrl', isEqualTo:
'xxxxxx').get();
まず最初にCloud Firestoreでインデックスを作りました。
【インデックスを作る手順】
①Firestore Databaseを開くと「データ」の画面が出てくるので、画像のように「インデックス」を選択
②「インデックス作成」を選択
(既にプロジェクトで作ったことがある場合は、表示のされ方が違います)
③自分のデータに合わせて、インデックスを作成する
データ
インデックス
数分経つとステータスが「ビルド中…」から「有効」に変わります。
インデックスを作成した後、以下のように記述したら、うまくデータを取得できました!
うまくいった記述↓↓↓
final result =
await FirebaseFirestore.instance.collectionGroup('masks').where('imageUrl', isEqualTo:
'xxxxx').orderBy('size',descending: true).get();
どなたかの一助となれば幸いです!
Discussion