web-dev-qa-db-fra.com

Est-il possible d'utiliser GeoFire avec Firestore?

GeoFire est étroitement lié à la base de données Realtime, tandis que les requêtes géographiques constituent une dépendance fonctionnelle commune à de nombreuses applications cherchant à migrer vers Firestore. Existe-t-il un moyen de reproduire le hachage/la récupération d'emplacements dans l'environnement Firestore?

51
urgentx

BONNE NOUVELLE. Il existe maintenant une bibliothèque pour iOS et Android) qui réplique GeoFire pour Firestore. La bibliothèque s'appelle GeoFirestore . Elle possède une documentation complète et est bien testée. J'utilise actuellement Le code est très similaire à celui de GeoFire et ne devrait donc prendre que quelques minutes à apprendre.

17
Nikhil Sridhar

Modifier (1er juillet 2019): Lorsque j'ai initialement répondu à cette question, j'étais optimiste sur le fait que des requêtes géo natives arriveraient bientôt dans Cloud Firestore. pas arriver. Cela fait toujours partie des projets à long terme, mais pour le moment, la meilleure option consiste à utiliser une bibliothèque créée par la communauté ou à créer votre propre bibliothèque à l'aide de GeoHashes ou de la bibliothèque S2 Geometry .

Les bibliothèques GeoFire pour la base de données Realtime ont été créées à l'aide de GeoHash et le transfert de la logique de ces bibliothèques vers Cloud Firestore devrait être relativement simple.


Sam de l'équipe Cloud Firestore ici. Comme le dit SUPERCILEX, Cloud Firestore prend déjà en charge le type de données GeoPoint. Nous travaillons dur pour apporter des requêtes géographiques natives au produit.

Les requêtes géographiques natives étant imminentes, nous ne porterons pas GeoFire dans Cloud Firestore. Au lieu de cela, nous allons rediriger ces efforts d'ingénierie pour obtenir les requêtes natives plus rapidement.

Si vous avez besoin de requêtes géographiques aujourd'hui et que vous ne voulez pas créer votre propre bibliothèque, restez fidèle à la base de données Realtime!

54
Sam Stern

Une solution qui me vient à l’esprit est d’ajouter une base de données Realtime uniquement pour les requêtes géographiques et de synchroniser les deux bases de données avec les fonctions de cloud, un peu comme Google le suggère avec présence .

Dans mon cas, il n'est même pas nécessaire de synchroniser beaucoup; Je garde juste une liste des UID avec leurs emplacements sur la base de données en temps réel et je fais toutes les requêtes géographiques là-bas.

11
urgentx

Un nouveau projet a été introduit depuis que l'affiche originale pose cette question pour la première fois. Le projet s'appelle GEOFirestore.

Avec cette bibliothèque, vous pouvez effectuer des requêtes telles que des documents de requête dans un cercle:

  const geoQuery = geoFirestore.query({
    center: new firebase.firestore.GeoPoint(10.38, 2.41),
    radius: 10.5
  });

Vous pouvez installer GeoFirestore via npm. Vous devrez installer Firebase séparément (car il s’agit d’une dépendance entre pairs de GeoFirestore):

$ npm install geofirestore firebase --save
7
ra9r

Cloud Firestore prend en charge de manière native les points géographiques. Voir le supporté types de données . Et vous trouverez la classe GeoPoint que vous pouvez utiliser pour définir des données et les interroger également:

query.whereEqualTo("location", GeoPoint(lat, long))
1
SUPERCILEX