2016-12-16 9 views
1

私はコーディングに新しく、ちょうどFirebaseを使い始めた、と私は基本的に、「トーナメント」と「デイリー・ゲーム」(2つのノードを作成しようとしている以下の機能を実行していますそれらが既に存在しない場合)。Firebase誤って削除した示したデータ/スウィフト3/Xcodeの8.2

データベースツリーは次のようになります。

-London 
    -City Game 
     -Date(stringDate) // getting this from another function, returns 2016-16-12 
      -Tournaments 
      -Daily Games 

、コードは次のようになります。

 func createTournamentsAndNonTournamentsNodes() { 

     let databaseRef = FIRDatabase.database().reference() 
     self.getLiveTimestamp() // this calls a function that returns timestamp 


     databaseRef.child("London/City Game/\(stringDate)").observeSingleEvent(of: .value, with: { (snapshot) in 

      if snapshot.hasChild("Daily Games") { 
       print ("Daily Games node exists already") 
      print(snapshot.key) 
      print(snapshot.value as Any) 
      } else { 
       print ("Daily Games dont exist, creating it now") 
       let postTwo : [String : AnyObject] = [("Daily Games") : "Initiated today at : \(self.timeStampString)" as AnyObject] 

       databaseRef.child("London/City Game/\(stringDate)").child("Daily Games").updateChildValues(postTwo) 
      } 
      if snapshot.hasChild("Tournaments") { 
       print ("Tournaments node exists already") 
      print(snapshot.key) 
      print(snapshot.value as Any) 
      } else { 
       print ("Tournaments dont exist, creating it now") 
       let postOne : [String : AnyObject] = [("Tournaments") : "Initiated today at : \(self.timeStampString)" as AnyObject] 
       databaseRef.child("London/City Game/\(stringDate)").child("Tournaments").updateChildValues(postOne) 
      } 
     }) 
    } 

だから、空のデータベース上で上記を実行した結果は、コンソール版画」ということです毎日のゲームノードは既に存在し、トーナメントノードは既に存在している。キーと値は以下の通りである。しかし、問題は1時間前の前回の実行時に私によって作成され、FirebaseのWebコンソールから手動で手動で削除してコードをテストし、データベースを完全に空にしてからコードを再実行することです。 Firebaseコンソールを再読み込みすると空のデータベースが表示されますが、データがデータベースにあるかのように私のコードで表示されます。これはどのように可能ですか? Firebaseは、Webコンソール上に空白で表示されるにもかかわらず、しばらくデータを保持していますか?

Optional({ 

    "Daily Games" = "Initiated today at : 13:01:19"; 
    Tournaments =  { 
     Tournaments = "Initiated today at : 13:05:22"; 
    }; 
}) 

私は間違っていますか?私のコードで人口統計データベースが表示されても、Webコンソールで空のデータベースが表示された場合、データベースに何が入っていて何がないのかを実際にどのように伝えるか多くのおかげで

UPDATE:

は私が真= persistenceEnabled)(FIRDatabase.databaseを持っていたし、また、実際のデバイス上でこれを実行しています。 persistenceEnabledを無効にした後は、正常に動作します。 persistenceEnabledを無効にすることなく、これを修正する方法は何ですか?

答えて

3

これは私のヒントです。

私はほぼ同じ問題を抱えていましたが、これを解決するために、observeSingleEventからobserveに変更し、Firebaseはあなたの携帯電話を調べるだけではありません。 `observeSingleEvent`がpersistenceEnabled =は` true`とうまく混合しない、それはすぐにローカルキャッシュから(古くなった/削除された)値で発火し、あなたのリスナーが」doesnのため、:問題の原因として最も可能性が高いが確かにある

+1

サーバーから更新/削除イベントを取得するために覚えています。 –

+0

Thanks v much Alisson&Frank - これを試してみます – Apneist

関連する問題