Хотелось бы узнать, как отфильтровать коллекцию документов Firestore, используя функцию, в которой некоторые аргументы функции являются значениями документов коллекции.
Предположим, что имелась некоторая коллекция документов Firestore формы
{
pointOfInterest: "Some string label"
longitude: -100.123
latitude: 50.456
}
Также есть некоторый код, который извлекает гео-координаты пользователя (в моем случае, черезact-native), поэтому что-то вроде
const getCurrentLatLong = () => {
// do some stuff, then...
return { latitude: someNumber, longitude: someOtherNumber }
}
Что в конечном итоге хотелось бы сделать, так это запуститьчто-то вроде
let currentLocation = getCurrentLatLong()
let filteredSet = firebase
.firestore()
.collection('MyCollection')
// filtering each individual document
.filter(function (document, currentLocation) {
let docLat = document.latitude
let docLong = document.longitude
return distance(
{latitude: docLat, longitude: docLong},
currentLocation)
< SOME_CONST_DISTANCE
})
Так что в итоге получится несколько отфильтрованных наборов всех документов в коллекции, которые на некотором расстоянии от currentLocation меньше SOME_CONST_DISTANCE.
Некоторое приближение к Google привело к некоторым потенциальным отправным точкам(https://stackoverflow.com/a/45359952/8236733 и https://firebase.google.com/docs/reference/js/firebase.database.Query#on),, но не совсем уверен, как использовать то, что показано в ссылках. Буду признателен за любые советы или документы о том, как этого добиться.