[英]Firebase Database Count
在聊天消息中添加計數以上傳到Google Firebase數據庫的最佳方法是什么? 我用的方法是,計數不斷重新初始化,因此弄亂了數據。
問題:上載聊天消息以免彼此干擾的最佳方法是什么? 通過firebase。
+ general_room 1,2,3,4
代表發送的每個messaga的數字。
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])
})
}
最初的問題尚不清楚,但是如果您要將消息上傳到聊天室,則結構如下:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.