前提・実現したいこと
Firebaseを利用してWebアプリ開発を行っているのですが、以下の画像のようなエラーが発生し、Firestoreからデータが取得できないという不具合が発生しています。
エラーが起きる環境として今のところ分かっていることは、
「iPhoneでWebアプリを使用した場合」
です。iOSのバージョンは最新で11.4.1です。
Android端末は試していません。
PCのブラウザ(Chrome)からWebアプリを使用した場合は上の画像のようなエラーは発生しません。
(上のエラーの画像はSafariのWebインスペクタを使ってみたものです。)
Firestoreからデータを取得してくるコードはたくさんあるのですが、例えば下記のようなものがあります。
js
1const db = firebase.firestore(); 2const { currentUser } = firebase.auth(); 3const userRef = db.collection('users').doc(currentUser.uid); 4 5userRef.onSnapshot((doc) => { 6 dispatch(setUserInfo(doc.data())); 7});
js
1const db = firebase.firestore(); 2const ticketsRef = db.collection('tickets'); 3const tickets = []; 4 5ticketsRef.orderBy('point', 'asc').get() 6 .then((querySnapshot) => { 7 let ticket; 8 querySnapshot.forEach((doc) => { 9 ticket = { 10 ...doc.data(), 11 ticketId: doc.id, 12 }; 13 tickets.push(ticket); 14 }); 15 dispatch(setTicketList(tickets)); 16 }) 17 .catch((err) => { 18 console.log(err); // eslint-disable-line 19 });
情報不足な部分はたくさんあると思いますが、僅かでもいいので何か解決の糸口となるようなご回答を頂けると非常に助かります。
よろしくお願い致します<(_ _)>
補足情報(FW/ツールのバージョンなど)
npm installしているfirebaseのバージョンですが、
"firebase": "^5.4.1"
で、最新だと思います。
エラーの原因
エラーの原因ですが、下記のように、存在しないコレクションに対してwhere()
を実行しているのが問題なような気がします。
しかし、PCのChromeではエラーが表示されないのに、iOSのSafariではエラーが発生してその他のFirestoreの処理も失敗するのはなぜなのだろうか.....
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 });
追記
今回の質問から派生した質問もリンクします。
Firestore コレクションの有無の判定方法
あなたの回答
tips
プレビュー