firebase firestore listenerの罠

medicmediaにwebエンジニアが3人来てくれました。
QBオンラインはただいま内製化にシフトしていっているようなので、あんな問題やこんな問題が解決されることを期待しています。

少し間が空いてしまいましたが、firebase firestoreについてです。

今回、medilinkアプリの機能として、elastic searchを採用しました。
その際、コンテンツ側の仕様でどうしてもユーザの購入ライセンスの同期が課題となりました。

悩んだ挙句下記を利用するように考えました。
https://firebase.google.com/docs/firestore/query-data/listen?hl=ja

しかし、このドキュメントに記載されていない罠があります。

最大でlistenerを貼れる上限が100であること

今回の失敗はコレクションの持ち方

users<collection> / userid<document>/ contents<collection> / contents_id<document>

useridでコレクションを持ち、各ユーザの保持するコンテンツをサブコレクションで持っています。
これだとユーザの購入履歴を検知するのにリスナーの個数に引っかかります。
つまり、ユーザの増加を検知で1個使用、各ユーザのコンテンツを検知するのにユーザ数分必要なためです。

そして、オーバーしたリスナーはイベントが通知されません。

下記に変更しました

users<collection> / userid<document>

useridの中に配列要素としてcontents_idをもたせる

これでリスナーは1つでOKとすることができました。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Bitnami