🔥
Firestore データが取得できない エラーも出ない
結論
.order
を使っている時に、1つもその order
に指定しているフィールドを持つドキュメントがない場合、うんともすんとも言わず、ただデータが取れない。
以下の例では、
tasks
コレクションのドキュメントで、
groupId
フィールドがthis.groupId
と同一のものを、
priority
カラムの順で並び替えて取得しようとしている。
firestore()
.collection('tasks')
.where('groupId', '==', this.groupId)
.order('priority')
.get()
しかし、where
で絞り込んだ物の中に、priority
フィールドをもつドキュメントが一つもない場合は、全くデータが取得されないという状況になる。
その上、エラーは一切でない。
経緯
新機能の実装で、並び替え用のフィールドを追加した。
開発環境では、並び替え用フィールドをもつデータを用意していたが、
新規で追加したものなので、本番環境には並び替え用フィールドを持つデータが有るはずがない。
テスト用に本番環境データベースにつなぐと、まったくデータが表示されないという状態に。
あとがき
エラーは一切でないってのが、柔軟性があるスキーマレスの危険なところですね。
SQLなら「そんなカラムねーよ!」って絶対言われてる。
久々にハマって、ムキ------!な事象でした。
本当にこんなくだらないことで時間を無駄にする人が、今後二度と現れないことを願い記事にいたします。
Discussion