2017-02-08 8 views
1
guard let uid = FIRAuth.auth()?.currentUser?.uid else {return} 
let userRef = FIRDatabase.database().reference().child("user_messages").child(uid) 
      userRef.observe(.childAdded, with: { (snapshot) in 
       let messageId = snapshot.key 
       self.messageIdArr.append(messageId) 
       print(self.messageIdArr[0]) 


     userRef.queryOrdered(byChild: "\(messageId)").queryEqual(toValue: "\(self.messageIdArr[0])").ref.removeValue() 

    }, withCancel: nil) 
} 

enter image description hereLöschen eines bestimmten childAdded Firebase Swift 3 iOS10

Hallo Jungs, hier also mein Code und hier ist ein screenie meiner Firebase Struktur. Ich mache einen Snapchat-Klon.

Hier ist, was ich versuche zu tun. Unter dem Kind user_messages. Es gibt ein Kind, das die aktuelle Benutzer-ID und darunter die unterschiedliche ID für die Nachrichten enthält. Wenn sie die Nachricht anzeigen, war ich der Verweis auf diese Nachricht aus Firebase unter ihrer UID gelöscht werden.

so im Grunde, sagen wir, ich möchte KcQ7kSELivNWNTAuqck löschen, wie würde ich das tun? Mein Code löscht jetzt alles unter der UID. Ich möchte nur 1 Nachricht löschen, nicht alle 5 unter 3JEuRBs2U7QbUa7SAgppMmzQUeM2

Vielen Dank für das Auschecken!

Antwort

1

childAdded auf jeder der Werte genannt, die innerhalb3JEuRBs2U7QbUa7SAgppMmzQUeM2 existieren.

Das bedeutet, wenn Sie den removeValue in "childAdded" (wie Sie jetzt tun) aufrufen, werden Sie schließlich alle IDs entfernen.

Lösung: , wenn Sie den Schlüssel für die Benutzernachricht kennen, und den Schlüssel der Nachricht selbst, die einzige Zeile Code schreiben Sie müssen, ist dies:

let messageToDelete = "KcQ7kSELivNWNTAuqck" //You should know how to get that 
let userRef = FIRDatabase.database().reference().child("user_messages") 
.child(uid).child(messageToDelete).removeValue(); 
+0

Ich sehe, was Sie versuchen, sagen Sie mir mit Ihrem Code, aber ich habe Ihren Code in und es löscht alle 'messageId' unter diesem' uid' –

+1

tatsächlich, das hat funktioniert !!!! Ich musste nur MessageId über MVC übergeben und eine ganz neue Referenz wie ich oben tun. Danke mein Herr! –

Verwandte Themen