Я получаю информацию от пользователя, чтобы получить информацию о месте, используя автозаполнение place api
, предлагаемое Google.
Теперь я хочу получить каждый документ из Firestore, который принадлежит этому месту. Итак, чтобы сделать это, какой подход я должен следовать? Что я должен хранить в документах, чтобы я мог легко найти это.
Мой подход
myShopsCollection
shopDoc1
city:"xyz"
arrayId:[placeId1,PlaceId2,PlaceId3]
shopDoc2
....
Теперь я получаю placeId PID
из API автозаполнения.
мой запрос стал таким
db.collection(myShopsCollection').where('arrayId','array-contains',PID)
Я думал, что должен хранить идентификаторы мест в массиве в каждом документе, затем получать идентификатор места из API места и получать документы, если массив содержит этот идентификатор места.
Но проблема в том, что одно место может иметь несколько идентификаторов мест.
Можете ли вы набросать то, что вы имеете в виду?
@ AlexMamo Я обновил свой вопрос, пожалуйста, проверьте его
Вы должны хранить местоположение по широте и долготе в типе данных GeoPoint и фильтровать данные на основе расстояния.
Ваш подход кажется мне осуществимым. В чем проблема?
Проблема @alexaMamo в том, что одно место может иметь несколько placeId. Поэтому, если placeId, полученный из API автозаполнения, может отличаться от того, что я сохранил в shopDoc для того же места.
@Ishant Если вы ищете что-то в большой области, например, во всем Дели, а в магазине ShopDoc хранится Geopoint для их местоположения (принадлежит Дели), то как вы рассчитываете расстояние?
Геозапросы еще не реализованы в Firestore изначально, но некоторые разработчики внедрили поверх них свои собственные «близлежащие запросы». Смотрите stackoverflow.com/questions/46630507/…, мое видео здесь: youtube.com/watch?v=mx1mMdHBi5Q и это краткое руководство: angularfirebase.com/lessons/…
что ты уже испробовал?