ReactNativeで位置情報にコメントのような付加情報を付けて投稿することでマップ上にマーカを表示できるようなアプリを作っています。
周辺検索をしたいためFireStoreに加えGeoFireStoreというライブラリを利用しており、ライブラリによるドキュメントのデフォルト構造が
d-- Mapオブジェクト
|- coodinates:GeoPoint
|-(任意のフィールド)comment:stringなど
|-(任意のフィールド)uid:stringなど
|-(任意のフィールド)
g-- String(各投稿のid)
L-- GeoPoint(d内の値と同じ)
このように生成されます。
g,Lはライブラリにより自動生成され
投稿時に付加するコメントやユーザIDなどはdのマップオブジェクト内に追加しています。
ここで本題なのですが、Firebaseでドキュメントを検索するときにdのMapオブジェクト内の値をwhere句とした複数ドキュメントの取得方法がわかりません。今後は各投稿により付加情報を加えることで様々な投稿の検索方法があった方が良いとも考えているため、皆さんの回答によってはデータ構造を変更することも考えています。
私が調べたところ
https://stackoverflow.com/questions/52905836/how-to-query-nested-objects-in-firestore/52906042
で書かれてある
array_containsでMapオブジェクト内のフィールドを全て指定するという方法がありましたが、利用する上で現実味がないと感じました。
また、もしMapオブジェクト内の値で検索できないようであればd,g,Lの階層にコメントフィールドを作ろうとも考えましたが一度GeoFireStoreで作成したドキュメントにFireStoreでフィールドを追加するという二度操作を加えることが最善策なのか自信がありませんでした。
お時間ある方、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー