1

名前文字列、住所文字列、および位置座標を含むオブジェクトを保存しようとしています。ドキュメントでは、firebase データを保存する方法と GeoFire データを保存する別の方法があるようです。

ファイアベース:

  var alanisawesome = ["full_name": "Alan Turing", "date_of_birth": "June 23, 1912"]
  var gracehop = ["full_name": "Grace Hopper", "date_of_birth": "December 9, 1906"]
  var usersRef = ref.childByAppendingPath("users")
  var users = ["alanisawesome": alanisawesome, "gracehop": gracehop]
  usersRef.setValue(users)

ジオファイア:

  let geofireRef = Firebase(url: "https://<your-firebase>.firebaseio.com/")
  let geoFire = GeoFire(firebaseRef: geofireRef)
  geoFire.setLocation(CLLocation(latitude: 37.7853889, longitude: -122.4056973), forKey: "firebase-hq") { (error) in
      if (error != nil) {
         println("An error occured: \(error)")
      } else {
         println("Saved location successfully!")
      }
  }

同じリクエストで位置情報とその他のデータの両方を保存することはできますか? ロケーションリクエストが失敗した場合、ユーザーがロケーションデータなしでオブジェクトを作成できないようにするため、同じリクエストでそれを行いたいと思います。または、その制限を課す別のスマートな方法はありますか?

4

2 に答える 2

0

元のエンティティとそのジオロケーションの書き込みは 2 つの別個の呼び出しであるため、これらは 2 つの別個の書き込み操作になります。これらの書き込みの 1 つはコードによって行われ、もう 1 つは GeoFire によって行われます。どちらの呼び出しも、JSON ツリーの異なる部分に書き込みます。

Firebase は最近、1 回の呼び出しで複数の場所に書き込むupdate()機能を追加しました。これにより、位置情報とエンティティの両方を 1 回の呼び出しで書き込むことができます。それを行いたい場合は、それを許可するようにGeoFireを変更する必要があります。

于 2016-02-07T16:07:06.167 に答える