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

224
Visualizações
El parámetro Query.orderBy() inicial tiene que ser el mismo que el(los) parámetro(s) fieldPath de Query.where() cuando se invoca un operador de desigualdad

Tengo este código en el que intento obtener un documento de una colección donde el tiempo no es más antiguo que hace media hora. Falla exactamente en el operador de desigualdad.

 try { const HALF_HOUR = 0.1 * 6000 * 6000 / 2; const tsToMillis = firebase.firestore.Timestamp.now().toMillis(); const currenttime = new Date(tsToMillis - HALF_HOUR); const myCurrentLoc = location[0]; // my device location const latitude = myCurrentLoc.latitude; const longitude = myCurrentLoc.longitude; const geocollection = GeoFirestore.collection('chats'); const query = await geocollection.limit(1).near({ center: new firebase.firestore.GeoPoint(latitude, longitude), radius: 0.03 }); query.where('details.time', '>=', currenttime).get().then((querySnapshot) => { if (!querySnapshot.empty) { querySnapshot.docs.forEach(documentSnapshot => { if (documentSnapshot.exists) { this.fetchAllMessages(documentSnapshot.id); } }); } }).catch(error => { console.error("Error in fetch_messages", error); }); } catch (e) { console.error("Something happened: ", e); // ERROR IS TRIGGERED HERE }

C:\MyProjects\BLEConnect\node_modules\react-native\Libraries\Core\ExceptionsManager.js:180 Ocurrió algo: Error: firebase.firestore().collection().orderBy() Consulta no válida. Parámetro inicial de Query.orderBy(): g.geohash tiene que ser el mismo que el(los) parámetro(s) de Query.where() fieldPath: detalles.tiempo cuando se invoca un operador de desigualdad

Este error ocurrió solo cuando se invocaba el operador de desigualdad pero no el operador de igualdad "==". ¿Porque? Simplemente no lo entiendo.

PD: el campo "tiempo" se agrega cuando se ha creado el geohash, por lo que en la misma consulta:

 const tsToMillis = firebase.firestore.Timestamp.now().toMillis(); const currenttime = new Date(tsToMillis); const geocollection = GeoFirestore.collection('chats'); geocollection.add({ name: 'Geofirestore', uid: device_id, coordinates: new firebase.firestore.GeoPoint(latitude, longitude), time: currenttime })
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

De la documentación de Firestore sobre las limitaciones de consulta :

En una consulta compuesta, las comparaciones de rango ( < , <= , > , >= ) y no igual ( != , not-in ) deben filtrarse en el mismo campo.

La forma en que se implementan los operadores de desigualdad requiere que ordenes en ese campo primero. Para el operador de igualdad, Firestore puede hacer más por sí mismo, por ejemplo, combinar información de múltiples índices en lo que se conoce como zig-zag-merge-join.

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede hacer algo como esto, preste atención al 'nativo' que extiende las consultas nativas de firestore:

 const geocollection = GeoFirestore.collection('myCollection'); const query = geocollection.near({ center: new firebase.firestore.GeoPoint(latitude, longitude), radius: 0.05 }) .native.where("created", ">", thirty_mins_old).orderBy("created", "desc");
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