Запросить определенные узлы из Firebase с помощью Geofire?

Как дела?

У меня есть следующая структура данных в Firebase:

  reports  
   .XbCacF7tHosOZxxO(child generated by auto-id)  
     ..userId: "XvSjDkLsaA8Se"  
     ..message: "Text goes here"  
     ..latitude: "30.123131"  
     ..longitude: "50.3313131"

   .Yoa7HsgTuWm97oP(child generated by auto-id)  
     ..userId: "XvSjDkLsaA8Se"  
     ..message: "Text goes here 2"  
     ..latitude: "30.99999"  
     ..longitude: "50.99999"  

  users  
   .XvSjDkLsaA8Se  
     ..name: "John"  
     ..email: "[email protected]" 

Идея приложения заключается в том, что пользователи могут делать несколько «отчетов».

В будущем, если у меня будут сотни «отчетов», я не хочу перегружать мой запрос. Поэтому я пытаюсь найти способ, используя запрос Geofire.

Мой вопрос: есть ли способ получить только «отчеты» рядом со мной, используя функцию радиуса от Geofire и широту и долготу от «отчетов»?

Спасибо!


person Caue Borella    schedule 19.12.2017    source источник


Ответы (1)


Я только что нашел способ сделать это.

Мне пришлось сохранить мой узел Geofire «reports_locations» с тем же идентификатором, сгенерированным Auto Id в момент создания отчета.

Функция, в которой мое приложение сохраняет данные в Firebase:

//Save data to Firebase Database
let key = report.childByAutoId().key
report.child(key).setValue(dataToSaveInFirebase)

//Save data to Geofire node
let userLocal = database.child("reports_locations")
let geoRef = GeoFire(firebaseRef: userLocal)

let location = CLLocation(latitude: self.localUser.latitude, longitude: self.localUser.longitude)

geoRef?.setLocation(location, forKey: key)

Я надеюсь, что это может помочь другим людям.

person Caue Borella    schedule 20.12.2017