MotoLAPが接続するクラウドサービス、Firebaseを改善しました。
MotoLAPを使って、複数人で同じコースを走行する場合、レースモードを使うと、 クラウド上で、集計して、他の人のタイムを見たり、順位を表示することができます。
MotoLAP送信器のIDで同一コースをはんだんするので、送信器が必要です。
そうなると、送信器がないとレースモードがどんなものなのかわからないので、、体験用としてデモモードがあります。このデモモードは、10分間利用できます。
一度限りだと、レースモードを十分に分かって頂けないかも知れないため、何度でもできるようにしています。何度も行っていると、データが増え続けてしまうので、前回のデータを消す処理をしています。
問題は、削除に時間がかかり、なかなか開始できません。デモモードを開始しつつ、非同期処理で削除しています。今度は、裏で消す際に新しいデータも消してしまう状態になっています。最初の1分ほどのデータは突然消えてしまいます。
一応、釈明を入れていますが、使っている人にとっては、データが消えてしまい、不快なので修正をしました。
以降は、Firestoreの操作メモです。
Firestoreの操作は難しいです。
- コレクション
- ドキュメント
- フィールド
- サブコレクション
Getは非同期処理が必要です。awaitやPromiseで、Get後の処理が必要です。
今回、はまったのは、where().get()でとった、docsを消す処理。
docs.forEach(doc => {})で、1つ1つをdeleteしたかったのですが、doc.delete()ではダメでした。半日近く格闘して、doc.ref.delete()でできました。get()で得たオブジェクトや、db.collection.doc...などで得たオブジェクトの違いをよく分かっていないのが、敗因ですね。