Estoy usando esta biblioteca https://geofirestore.com/ para crear un documento en una colección si no existe ningún otro documento dentro de las coordenadas dadas. Ahora, ¿debería usar el método de esta biblioteca para transacciones en la función de la nube o directamente en la aplicación?
Personalmente, no veo una razón para hacerlo en la nube, aunque podría estar equivocado, así que pido su opinión.
const geocollection = GeoFirestore.collection('chats'); const query = geocollection.limit(1).near({ center: new firebase.firestore.GeoPoint(latitude, longitude), radius: 0.03 }); GeoFirestore.runTransaction((transaction) => { const geotransaction = new GeoTransaction(transaction); return geotransaction.get(query).then((sfDoc) => { if (sfDoc.exists) { sfDoc.docs.forEach(documentSnapshot => { if (documentSnapshot.exists) { firestore().collection('chats') .doc(documentSnapshot.id) .get() .then((res) => { // insert new document geocollection.add({ name: 'Geofirestore', uid: device_id, coordinates: new firebase.firestore.GeoPoint(latitude, longitude), created: currenttime }) }) } }); } else { geocollection.add({ name: 'Geofirestore', uid: device_id, coordinates: new firebase.firestore.GeoPoint(latitude, longitude), created: currenttime }) } }); });Si desea que la ubicación del documento sea única en su colección, considere usar esa ubicación como base para el ID del documento, o algún valor derivado de la ubicación (como un hash o el geohash que usa Geofirestore).