Я думаю, что документация может быть неясной, но вот что происходит.
Приведенный ниже код создает GeoFirestoreQuery :
const geoQuery = geoFirestore.query({
center: new firebase.firestore.GeoPoint(10.38, 2.41),
radius: 10.5,
query: (ref) => ref.where('d.count', '==', '1')
});
Если вы хотите создать гео-запрос, вы бы использовали on
слушатель для события key_entered
, которое будет возвращать документы в вашем запросе, см. Здесь .
Однако вы вызываете функцию query
, которая возвращает запрос Firestore или CollectionReference (в зависимости от того, передали ли вы функцию запроса при создании или обновлении критериев запроса).
Вызов get
на этом query
ОБОЖАЕТ все магическое добро GeoFirestore и не даст вам того, чего вы хотите или ожидаете ... Вместо этого вы захотите сделать что-то подобное.
// Store all results from geoqueries here
let results = [];
// Create geoquery
const geoQuery = geoFirestore.query({
center: new firebase.firestore.GeoPoint(10.38, 2.41),
radius: 10.5,
query: (ref) => ref.where('d.count', '==', '1')
});
// Remove documents when they fall out of the query
geoQuery.on('key_exited', ($key) => {
const index = results.findIndex((place) => place.$key === $key);
if (index >= 0) results.splice(index, 1);
});
// As documents come in, add the $key/id to them and push them into our results
geoQuery.on('key_entered', ($key, result) => {
result.$key = $key;
results.push(result);
});