🔥

Firestore データが取得できない エラーも出ない

2021/07/04に公開

結論

.order を使っている時に、1つもその order に指定しているフィールドを持つドキュメントがない場合、うんともすんとも言わず、ただデータが取れない。

以下の例では、
tasks コレクションのドキュメントで、
groupIdフィールドがthis.groupIdと同一のものを、
priority カラムの順で並び替えて取得しようとしている。

firestore()
  .collection('tasks')
  .where('groupId', '==', this.groupId)
  .order('priority')
  .get()

しかし、where で絞り込んだ物の中に、priority フィールドをもつドキュメントが一つもない場合は、全くデータが取得されないという状況になる。

その上、エラーは一切でない。

経緯

新機能の実装で、並び替え用のフィールドを追加した。

開発環境では、並び替え用フィールドをもつデータを用意していたが、
新規で追加したものなので、本番環境には並び替え用フィールドを持つデータが有るはずがない。

テスト用に本番環境データベースにつなぐと、まったくデータが表示されないという状態に。

あとがき

エラーは一切でないってのが、柔軟性があるスキーマレスの危険なところですね。
SQLなら「そんなカラムねーよ!」って絶対言われてる。

久々にハマって、ムキ------!な事象でした。

本当にこんなくだらないことで時間を無駄にする人が、今後二度と現れないことを願い記事にいたします。

Discussion