Я пытаюсь выполнить запрос, который возвращает результаты с местоположением в пределах 50 км и отметкой времени в течение 1 часа. Я использую GeoFirestore для этой задачи, но моя реализация, кажется, выбрасывает вышеуказанные ошибки. Документация меня немного смущает.
Эта страница предполагает, что я могу настроить запрос следующим образом:
//At the function I'm querying
const firebase = require('../firebase')
function getPosts() {
let oneHourAgo = new Date(new Date() - 3600000)
let ref = firebase.db.collection('posts')
let geoFirestore = new GeoFirestore(ref)
let geoQuery = geoFirestore.query({
center: firebase.geopoint(location),
radius: 50,
query: (ref) => ref.where('d.timestamp', '>', oneHourAgo)
})
return geoQuery.query().get()
.then(//...)
}
//at firebase.js (a wrapper where I centralize common firebase methods)
let db = admin.firestore()
function geopoint(location) {
return new admin.firestore.GeoPoint(location.latitude, location.longitude)
}
module.exports = {
db,
geopoint
}
Приведенная выше реализация выдает geoFirestore.query is not a function
Вторая попытка после пример здесь с использованием geocollection
:
function getPosts() {
let oneHourAgo = new Date(new Date() - 3600000)
let geoFirestore = new GeoFirestore(firebase.db)
let geoCollection = geoFirestore.collection('posts')
let geoQuery = geoCollection.near({
center: firebase.geopoint(location),
radius: 50,
query: (ref) => ref.where('d.timestamp', '>', oneHourAgo)
})
return geoQuery.query().get()
.then(//...)
}
Вторая попытка выдает Unexpected attribute 'query' found in query criteria
.
Я искал метод .near()
в документации, но не могу ' Кажется, он не найден.
PS: я кодирую в nodejs для серверной части.