2017-03-02 5 views
0

チャットメッセージにグーグルファイアベースデータベースにアップロードするカウントを追加する最も良い方法は何ですか?私がそれを持っている方法は、データが壊れるように、カウントを再初期化し続けます。Firebaseデータベース数

質問:お互いに干渉しないようにチャットメッセージをアップロードする最も良い方法は何ですか? firebase経由で。

送信された各messagaを表す+ general_room 1,2,3,4-

番号。

import Foundation 
import Firebase 
import FirebaseDatabase 
import FirebaseStorage 

var count = 0 

func UploadGeneralChatRoom(message : String) { 

    //Firebase Initialization 
    var ref: FIRDatabaseReference! 
    //var storage: FIRStorageReference! 
    let userID = FIRAuth.auth()?.currentUser?.uid 
    ref = FIRDatabase.database().reference() 
    //storage = FIRStorage.storage().reference() 


    //Get Data from database resend to database 
    ref.child("Users").child(userID!).observeSingleEvent(of: .value, with: {(snapshot) in 

     let snapDict = snapshot.value as? NSDictionary 
     let username = snapDict?["Username"] as? String ?? "" 
     let firebaseUserPhotoURL = snapDict?["photo_url"] as? String ?? "" 

     count = count + 1 
     print("Count: ", count) 


     let countString = String(count) 

     print("CountStrig: " + countString) 


     ref.child("general_room").child(countString).setValue(["Username": username, "uid": userID!, "Message" : message, "photo_url" : firebaseUserPhotoURL]) 


    }) 

} 
+0

は、私が質問を理解することは本当に難しい時間を過ごしています。あなたはカウントを追加することを求めていますが、お互いに干渉するチャットメッセージについても質問していますか?また、コードは0にカウントを初期化してから、データベースに読み書きするために疑問があります。毎回0から始まるのではなく、firebaseから子ノードの数を読み取る方が理にかなっていませんか?質問を明確にして更新してください。私たちは答えようとします。 – Jay

+0

私の問題は、それぞれのメッセージを新たにカウントしています。毎回ゼロに再初期化するので、私は何をしていないのですか?私は自分のfirebaseのアップロードを変更する方法を知らないので、カウントが繰り返されることはありません。 – nil

+0

どのように毎回ノードを数えますか? – nil

答えて

0

元の質問はかなり不明であるが、あなたがチャットルームにメッセージをアップロードしたい場合は、ここでは構造です:

users 
    uid_0 
    name: "Kirk" 
    uid_1 
    name: "Spock" 
    uid_2 
    name: "McCoy" 

chat_rooms 
    room_0 
    name: "Bridge Chat Room" 
    messages: 
    message_0: 
     msg: "This is a message posted by Spock" 
     uid: "uid_1" 
    message_1: 
     msg: "Message posted by Kirk" 
     uid: "uid_0" 

とchat_roomsで新しいメッセージを作成するために、いくつかのコード、room_0(これは非常に)凝縮したが、読みやすくするために、冗長去ることができ

let ref = rootRef.child("chat_rooms") 
let roomRef = ref.child("room_0") 
let messagesRef = roomRef.child("messages") 
let msgRef = messagesRef.childByAutoId() 
let data = ["msg": "a message posted by McCoy", 
      "uid": "uid_2"] 
msgRef.setValue(data) 

になります0
chat_rooms 
    room_0 
    name: "Bridge Chat Room" 
    messages: 
    message_0: 
     msg: "This is a message posted by Spock" 
     uid: "uid_1" 
    message_1: 
     msg: "Message posted by Kirk" 
     uid: "uid_0" 
    message_2: 
     msg: "a message posted by McCoy" 
     uid: "uid_2" 

message_0、message_1などは、childByAutoIdで作成されたキーです。

あなたがそこにあるどのように多くのメッセージを知りたい場合は、ここでは一つの選択肢

messagesRef.observeSingleEvent(of: .value, with: { snapshot in 
    print(snapshot.childrenCount) 
}) 

と結果

3 
関連する問題