2017-03-02 96 views
0

向您的聊天消息添加計數以將其上傳到Google桌面搜索引擎優化數據庫的最佳方式是什麼?我擁有它的方式不斷重新初始化,這樣就會弄亂數據。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,然後您讀取和寫入一些數據到數據庫。從firebase讀取子節點的數量而不是每次都從0開始更有意義嗎?請澄清並更新問題,我們會盡力回答。 – 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) 

將導致

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