2016-10-09 9 views
0

FireFoxバックエンドにGeofireフレームワークを使用していますが、データベースの場所を保存する際に問題があります。Swiftを使用してFireFireを使用してGeofireを使用してGeoLocationを保存する問題

私が必要とするのは、自動的に生成されたID値の順にOrdersテーブルにユーザーが選択した場所を保存することです。

@IBAction func proceedOrder(_ sender: UIButton){ 

    FIRAuth.auth()?.addStateDidChangeListener({ (auth, user) in 
     if user != nil { 

      let userUID = (user?.uid)! 
      let scheduled = self.pickDateTextField.text! 
      let time = self.pickTimeTextField.text! 
      let service = self.pickServiceTextField.text! 
      let model = self.carModelTextField.text! 
      self.ref = FIRDatabase.database().reference(fromURL: "https://***-****-***.firebaseio.com/") 
      let geoFire = GeoFire(firebaseRef: self.ref) 
      let dateCreated = Int(NSDate().timeIntervalSince1970) 
      let orderRef = self.ref.child("Orders").childByAutoId() 

      let values = ["uid":userUID,"date_Created":dateCreated,"date_Scheduled":scheduled,"time_Scheduled":time,"service_Type":service,"car_Model":model,"status":"Scheduled"] as [String : Any] 
      orderRef.updateChildValues(values, withCompletionBlock: { (err, dbRef) in 
       if err != nil { 
        print("Error: \(err)") 
        return 
       } else { 
        geoFire?.setLocation(self.currentLocation, forKey: "Orders\(dbRef.key)") 
       } 
      }) 

     } 
    }) 
} 

firebase console

答えて

1

Geofireは、データがあなたの他のオブジェクトデータとは別のジオロケーションを保つように設計されています。 APIはそれらを混在させることはできません。

は、その項目の他の情報へのアイテムの位置情報を一致させるためには、高速な応答に同じ鍵

Orders 
    <orderId> 
OrderLocations (or whatever key you prefer, as long as it is separate) 
    <orderId> 
+0

おかげでフランクの下でそれらの両方を格納します。しかし、私は注文を照会するときに、後でそれらをリンクすることはできますか? –

+0

Ahh ok ... g: "id"かもしれない。私はg: "id"をorders ---> id - > valuesに使用します。 –

+0

あなたは両方の場所で同じキーを使用しています。したがって、「Orders/」と「Geodata/」は互いに対応しています。 –

関連する問題