2016-12-27 30 views
2

Also habe ich mich umgesehen und es gibt viele Leute, die Firebase-Transaktionen machen und sie sind alle verschieden. Alles, was ich tun möchte, ist nur 1 zu einem Zähler hinzufügen und was iv funktioniert funktioniert perfekt, aber ich möchte überprüfen, ob ich es richtig mache, weil mein Weg viel einfacher war als ihre Dokumente.Firebase-Transaktionen - Ist das korrekt?

Prost ist ein Fortschritt! :)

database.child("stories").child(articleKey).runTransactionBlock({ (currentData:FIRMutableData) -> FIRTransactionResult in 
      if var post = currentData.value as? [String: AnyObject] { 

       var likeCount = post["storyLikes"] as? Int ?? 0 
       likeCount += 1 
       post["storyLikes"] = likeCount as AnyObject? 
       currentData.value = post 

       return FIRTransactionResult.success(withValue: currentData) 
      } 
      //Abort like if there was a problem 
      return FIRTransactionResult.abort() 
     }) 

Antwort

3

Das sieht gut aus, solange Sie mit der Logik zufrieden sind.

Ihre aktuelle Logik ist nur ein Update - wenn es keinen bestehenden Post gibt, werden Sie die Transaktion abbrechen (currentData.value wird null sein).

Sie entfernen 1 aus der likeCount anstatt hinzuzufügen, wie Sie in der Beschreibung erwähnen.

Die Version haben Sie sicherlich funktioniert, aber Sie können runTransaction:andCompletionBlock implementieren, mit denen Sie Fehler protokollieren können, vor allem beim Debuggen/Testen.

+0

Vielen Dank! Ah ja, das war die unähnliche Logik, die ich gepostet habe, hoppla! Wenn der Artikel erstellt wird, legt er den Standardzähler wie 0 fest, sodass die Transaktion nicht abgebrochen wird. Ich habe gesehen, dass es einen Abschlussblock gab, den ich benutzen konnte, aber ich werfe mich immer noch hoch, wenn ich es brauche! Aber danke! – Eli

Verwandte Themen