2017-02-08 3 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 hereは、だからここに私のコードであり、ここで私のFirebase構造のscreenieで、

こんにちはみんな、特定childAdded Firebaseスウィフト3 iOS10を削除します。スナップショットのクローンを作っています。

ここに私がやろうとしていることがあります。子供の下にuser_messages。現在のユーザーIDを含む子があり、その下にはメッセージのIDが異なります。彼らがメッセージを見ると、そのメッセージの参照はFirebaseからUIDで削除されました。

ですので、基本的にはKcQ7kSELivNWNTAuqckを削除したいと言いますが、どうすればいいですか?私のコードは今、UIDの下のすべてを削除します。 1つのメッセージを削除したいだけです。すべてが5未満です3JEuRBs2U7QbUa7SAgppMmzQUeM2

ありがとうございます!

答えて

1

childAddedが3JEuRBs2U7QbUa7SAgppMmzQUeM2内に存在する値のそれぞれに対して呼び出されます。

"childAdded"内でremoveValueを呼び出すと(今のように)、すべてのIDが削除されます。

ソリューション: ユーザーのメッセージ、およびメッセージ自体のキーのキーを知っていれば、あなたが書かなければならないコードの行だけがこれです:

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

私はあなたがしようとしているかを見ますあなたのコードを教えてください。しかし私はあなたのコードを入れて、その 'uid'の下にあるすべての' messageId'を削除します。 –

+1

実際には、これはうまくいきました!!!!私はMVCを介してmessageIdを渡し、上記のようにまったく新しい参照をしなければなりませんでした。ありがとうございます! –

関連する問題