2017-11-22 5 views
0

Ich brauche Hilfe beim Löschen eines Beitrags von Firebase. Ich habe den Post-ID-Schlüssel und alles und habe alle Methoden ausprobiert und nichts funktioniert. Ich möchte das 3. Kind in "Posts" löschen. Ich habe alle Arten von Code versucht. Der folgende Code wirft nicht einmal einen Fehler auf. Nicht sicher, was zu tun ist. Ich erhalte die Werte mithilfe eines indexpath.row-Tags.Swift Firebase Löschen Beitrag

let postID = self.posts[sender.tag].postID  
Database.database().reference().child("posts").child(uid!).child(postID).removeValue { error, _ in 
       if error != nil { 
        print("error \(error)") 
       } 
      } 

enter image description here

enter image description here

Testing

Ich habe versucht, diese und diese löscht alles unter diesem Benutzer ...

Database.database().reference().child("posts").child(uid!).queryOrdered(byChild: "postID").queryEqual(toValue: postID).observe(.value, with: { snapshot in 
       if snapshot.exists() { 
        snapshot.ref.removeValue() 

        print(snapshot) 

       } else { 
        print("snapshot doesn't exist") 
       } 
      }) 
+0

Code ist perfekt, um einen Beitrag zu löschen, machen Sie Ihre Datenbank eine Sache öffnen parllely, wenn Sie ein Kind Wert zu entfernen denke ich Wert wird entfernt, immer aber zur gleichen Zeit aufgrund einiger Referenz ein neuer Beitrag I konfrontiert hinzugefügt Dieses Problem, überprüfen Sie alle Ihre Referenzen auf rDB –

+0

Haben Sie die UID und die Post-ID überprüft? – Pipiks

+0

Alles ist gut verbunden. Ich habe nicht alle Werte ausgedruckt. Und die Datenbank ändert sich nicht einmal, sie wird nicht rot und dann grün oder so. Ich weiß, dass es nicht aus der Datenbank löscht und neue Werte erzeugt. –

Antwort

0

Prüfung den Wert die Referenz wollen Sie von

Database.database().reference().child("posts").child(uid!).child(postID).observe(.value, with: { snapshot in 
    print(snapshot.value) 
}) 

Sie sie zusammen können löschen zu überprüfen, ob es lokal oder nicht

Database.database().reference().child("posts").child(uid!).child(postID).removeValue() 
Database.database().reference().child("posts").child(uid!).child(postID).observe(.value, with: { snapshot in 
     print(snapshot.value) 
    }) 

, ob es richtig ist passiert Sie haben keinen Zugang zu Knoten aus der gelöscht werden Datenbank, überprüfen Sie die Registerkarte Datenbankregeln in der Firebase Konsole

als letztes Mittel können Sie Ihre Verbindung überprüfen, denn wenn es eine langsame Verbindung gibt, speichert Firebase die von Ihnen vorgenommenen Aktualisierungen, bis eine gute Verbindung zur Cloud besteht

+0

Mit Ihrem Code ist der Ausdruck, den ich bekomme, "Optional ()". Ich poste meine Sicherheitsberechtigungen .... –

+0

Die Sache ist, dass ich mein Bild vom Speicher löschen kann, obwohl –

+0

ich nicht verstehe, warum es null zurückgibt, wenn der Wert noch dort in der Datenbank ist –

0

Das funktioniert.

Database.database().reference().child("posts").child(uid!).queryOrdered(byChild: "postID").queryEqual(toValue: postID).observe(.childAdded, with: { snapshot in 
       if snapshot.exists() { 

        snapshot.ref.removeValue() 


        print(snapshot) 

       } else { 
        print("snapshot doesn't exist") 
       } 
      })