2017-03-07 25 views
1

にそれが困難firebaseで値を更新するために見つける私は、フィールド名user_postを得ました。次に、childByAutoId()を使用して新しい投稿を追加しています。その中で私はの投稿IDに従って投稿を挿入しています。今度はのように更新し、新しいフィールド peopleWhoLikeを追加します。誰でも私にどのようにを挿入してくださいまたは更新の任意の特定の投稿の値を教えてください。ここでシーケンス>)postId user_post>childByAutoId(あるは私のFirebaseデータベースはここでは、この</p> <p><a href="https://i.stack.imgur.com/pnh6l.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/pnh6l.png" alt="enter image description here"></a></p> <p>のように見えるスウィフト

は私のコードです:ここでは

let keyToPost = ref.child("user_post").childByAutoId().key 

ref.child("user_post").queryOrdered(byChild: self.postID).observeSingleEvent(of: .value, with: { (snapshot) in 

     if (snapshot.value as? [String : AnyObject]) != nil { 

      let updateLikes: [String : Any] = ["peopleWhoLike/\(keyToPost)" : FIRAuth.auth()!.currentUser!.uid] 

      ref.child("user_post").child(self.postID).updateChildValues(updateLikes, withCompletionBlock: { (error, reff) in 

       if error == nil { 
        ref.child("user_post").child(self.postID).observeSingleEvent(of: .value, with: { (snap) in 
         if let properties = snap.value as? [String : AnyObject] { 
          if let likes = properties["peopleWhoLike"] as? [String : AnyObject] { 
           let count = likes.count 

           let update = ["Like" : count] 
           ref.child("user_post").child(self.postID).updateChildValues(update) 

           self.likeBtn.isHidden = true 
           self.unlikeBtn.isHidden = false 
           self.likeBtn.isEnabled = true 
          } 
         } 
        }) 
       } 
      }) 

     }//xxx 


    }) 

    ref.removeAllObservers() 
+0

より詳しい回答が追加されました。 – Ro4ch

答えて

2

、あなたは例えば一度に一つの値を更新することができる方法であります
let ref : FIRDatabaseReference! 
    ref = FIRDatabase.database().reference() 
    ref.child("yourNode").child("subNode").updateChildValues(["yourKey": yourValue]) 

私が行ったことは、自分の投稿にキーを書き込むことでした。投稿が作成されたとき、私はchildByAutoIDを取得し、それを投稿データに追加したので、後で参照することができました。私はそれを "キー"として参照し、値はchildByAutoId文字列になります。ユーザーが好きか、それをunlikesたび、私はそのキーを持っていたら、私はあなたが呼ばれるルートに新しいノードを作ることができ

ref.child("yourNode").child(postKey).updateChildValues(["key": yourValue]) 

クリックで

、このように、などを追加することができるだろう「好き」 postKeyを受け取り、Likesノードの下にsubNodeを作成し、userIdを追加します。投稿が読み込まれると、Likesノードに入り、投稿が一致して、ユーザーが好きであるかどうかをチェックします。

likes example

は、ここで私は、ユーザーウォッチリストを持っているが、それは同類と同じである可能性があります。私のアプリでは、ユーザーが投稿を保存します。私はwatchlistsの下でuserIdを記録し、userIdは保存されたpostIdです。これは好きに似ている可能性があります。それから私はちょうど比較し、一致があるかどうか見る。

関連する問題

 関連する問題