前提・実現したいこと
FirebaseのFirestoreを利用しているのですが、コレクションの有無を判定したいです。
例えば、コード①のようにreceivedPointRef
のようにpoint
コレクションへの参照を作り、point
コレクションがあればそのコレクションにクエリを実行したりし、point
コレクションが無かった場合は別の処理を行う、ということがしたいです。
コード①
js
1const db = firebase.firestore(); 2const { currentUser } = firebase.auth(); 3const receivedPointRef = db.collection(`users/${currentUser.uid}/point`);
というのも、コード②のように、point
コレクションが無い状態でコレクションにwhere()
などを実行すると、iPhoneのSafari, Chromeでは、
"Firestore(5.0.4): FIRESTORE(5.0.4) INTERNAL ASSERTION FAILED: Updating a non-existent query"
のようなエラーが表示され、その他のFirestoreの処理もうまくいかなくなってしまいます(画像はSafariのWebインスペクタでiPhoneでのエラーを表示したもの)。
PCのChromeで試したところ、このエラーは発生しませんでした。
コード②
js
1const db = firebase.firestore(); 2const { currentUser } = firebase.auth(); 3const receivedPointRef = db.collection(`users/${currentUser.uid}/point`); 4 5receivedPointRef.where('sent_time', '>=', startOfTargetDate).where('sent_time', '<', endOfTargetDate) 6 .get() 7 .then((querySnapshot) => { 8 // 処理 9 });
ですので、コレクションの有無を判定する方法がありましたら教えていただけますでしょうか<(_ _)>
もしそのような方法がない場合、コレクションの有無によって処理を変えるにはどうすべきなのでしょうか?
何かご回答を頂けると助かります。
追記
firebaseのバージョンを最近リリースされた5.5.0
に上げてみましたが、改善はされませんでした...
あなたの回答
tips
プレビュー