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

218
Visualizações
cómo ordenar datos por geohash en firestore v9 y cómo funciona la consulta de geohash

¿Cómo clasifico los datos por geohash en firestore v9? Los documentos de V8 dan este ejemplo:

 const bounds = geofire.geohashQueryBounds(center, radiusInM); const promises = []; for (const b of bounds) { const q = db.collection('cities') .orderBy('geohash') .startAt(b[0]) .endAt(b[1]); promises.push(q.get()); } // Collect all the query results together into a single list Promise.all(promises).then((snapshots) => { const matchingDocs = []; for (const snap of snapshots) { for (const doc of snap.docs) { const lat = doc.get('lat'); const lng = doc.get('lng'); // We have to filter out a few false positives due to GeoHash // accuracy, but most will match const distanceInKm = geofire.distanceBetween([lat, lng], center); const distanceInM = distanceInKm * 1000; if (distanceInM <= radiusInM) { matchingDocs.push(doc); } } } return matchingDocs;

No se como traducirlo a V9, he probado asi:

 const { latitude, longitude } = location?.coords || {}; if (latitude && longitude) { const radiusInM = 50 * 100000; const center = [latitude, longitude]; const bounds = geofire.geohashQueryBounds(center, radiusInM); for (const b of bounds) { const q = query( collection(firestore, "laboratories"), orderBy("geoHash"), startAt(b[0]), endAt(b[1]) ); const querySnapshot = await getDocs(q); querySnapshot.forEach((doc) => { console.log(doc.id, " => ", doc.data()); }); } }

Pero no devuelve ningún resultado, ¿cómo funcionan esas consultas, porque en los resultados de los límites cuando configuro el radio en 50 * 100 obtengo 4 matrices con hashes, supongo que esos son puntos en un mapa?

 0: (2) ['u3j', 'u3k'] 1: (2) ['u3n', 'u3p'] 2: (2) ['u3m', 'u3n'] 3: (2) ['u3q', 'u3r']

sin embargo, cuando aumento el radio de búsqueda a 50 * 100000, solo obtengo

 0: (2) ['h', '~']

No entiendo donde me equivoco, uno de esos lugares esta intencionalmente muy cerca de donde estoy. Y suponiendo que esta búsqueda fuera exitosa, ¿devolvería solo ubicaciones en el área o se ordenarían? ¿Quizás debería usar alguna biblioteca adicional para eso? ¿Me recomendarías uno, por favor? ¿Y debo almacenar la latitud y la longitud junto con geohashes o esto sería suficiente?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Publicar los comentarios de Frank para mayor visibilidad.

Su traducción a la sintaxis v9 se ve bien, pero tiene un error tipográfico en el nombre del campo aquí: orderBy("geoHash") , debe reemplazarse con orderBy("geohash") , con una h minúscula en hash .

El campo geohash es un valor de cadena, no un tipo de datos específico. Es posible que desee consultar el artículo sobre geohashes o ver un video al respecto.

Para reiterar, el problema en su código aquí es que escribió mal el nombre del campo en su segunda consulta/v9, ya que deletreó geoHash de manera diferente que en la primera consulta/v8. Incluso si elimina las cláusulas startAt / endAt , no obtendrá resultados, ya que ningún documento tiene un campo con ese nombre mal escrito.

about 4 years ago · Juan Pablo Isaza Relatório
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