Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

169
Visualizações
Firestore: combinación de GeoQuery con consultas normales

Estoy implementando una aplicación que contiene un mapa. En este mapa, el usuario puede seleccionar su ubicación, con el fin de encontrar elementos de otros usuarios en su radio.

Para hacer eso, cuando un usuario escribe un elemento en Firestore, solo estoy geocodificando inversamente la ubicación seleccionada, en un idioma específico (inglés), para obtener el nombre de la dirección (en inglés) y almacenarlo como un campo de cadena normal en un nuevo documento de Firestore.

Así como esto:

 export const GOOGLE_MAPS_GEOCODING_ENDPOINT = ( latitude, longitude, key, language = "en" ) => `https://maps.googleapis.com/maps/api/geocode/json?` + `latlng=${latitude},${longitude}&key=${key}&language=${language}`; export default async (coordinate) => { const endpoint = GOOGLE_MAPS_GEOCODING_ENDPOINT( coordinate.latitude, coordinate.longitude, Constants.manifest.ios.config.googleMapsApiKey ); const res = await fetch(endpoint); const data = await res.json(); // Get the address components const addressComponents = data.results[0]?.address_components; // Build the location object const location = buildLocation(addressComponents); return location; };

Implementé esto hace algunos años, y recientemente leí sobre Firestore GeoQueries (no estoy seguro si se agregó el año pasado o recientemente, pero nunca lo he usado).

Actualmente, solo estoy realizando consultas como:

 // Fetching items near me const query = db .collection("items") .where("random", "<", randomId) .where("type", "==", type) .where("location.city", "==", city) .orderBy("random", "desc");

Como puede ver, estoy usando el campo de país para realizar algún tipo de "GeoQuery". Pero no me gusta la idea de tener que almacenar direcciones en la base de datos, con la restricción de que, independientemente de la internacionalización de la app, deben estar en inglés.

¿Actualmente es posible combinar la función Firestore GeoQuery para realizar consultas "complejas" como la que describí?

Quiero decir, obtener artículos aleatorios cerca de mí cuyo precio sea más bajo que X, o cosas así (hablando de latitud y longitud, no de direcciones).

Porque, como he leído en la documentación, tenemos que ordenar la colección por geohashes... y en mi caso necesito obtener documentos aleatorios dentro de algunos límites. Entonces algo como:

 const q = db. .collection("items") .where("randomId", "<=", randomId) .orderBy("geohash") .startAt(b[0]) .endAt(b[1]);

no funcionará, ya que el primer orderBy debería ser "randomId". ¿Hay algún ejemplo o solución? ¿Debería usar subcolecciones (que contienen elementos con límites similares (en un rango)) en su lugar?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda