Я получил ключ сообщений, который был создан ChildByAutoID. Я пытаюсь получить к ним доступ или заставить код прочитать эти ключи, чтобы использовать этот ключ где-то еще, чтобы получить некоторые данные от использования этих ключей из базы данных firebase
Я пытался наблюдать UID пользователя, чтобы получить ключи, но я не могу получить к ним доступ, так как в коде он показывает, что привязка - это UID пользователя, когда я пытаюсь прочитать узлы под UID
в чате Контроллер
func sendMessage() {
let currentUserID = Auth.auth().currentUser?.uid
let databaseRef = Database.database().reference().child("messages")
let timestamp = Date.timeIntervalSinceReferenceDate
let text = typingMessageText.text as AnyObject
let receiverid = user?.userid as AnyObject
let senderid = currentUserID as AnyObject
let time = timestamp as AnyObject
let value: [String:AnyObject] = ["text": text, "receiverid": receiverid, "senderid": senderid, "timestamp": time]
let childref = databaseRef.childByAutoId()
childref.updateChildValues(value) { (error, myRef) in
print(myRef.key as Any)
let messageID = myRef.key
let mnm = [messageID : 1]
let userMessageRef = Database.database().reference().child("usersmesssages").child(currentUserID!)
userMessageRef.updateChildValues(mnm)
}
}
Функция наблюдения в контроллере таблицы
func observeMessages(){
let currentUserID = Auth.auth().currentUser?.uid
let newDB = Database.database().reference().child("usersmesssages").child(currentUserID!)
newDB.observe(.value) { (DataSnapshot) in
let key = DataSnapshot.key
print("the Key is \(DataSnapshot)")
let dbRef = Database.database().reference().child("messages").child(key)
dbRef.observe(.childAdded, with: { (snap) in
print("thesnap is \(snap)")
if let dictinoary = snap.value as? [String: AnyObject] {
guard let receiverid = dictinoary["receiverid"] ,let senderid = dictinoary["senderid"], let text = dictinoary["text"], let time = dictinoary["timestamp"] else {
return
}
let messageValues = Message.init(text: text as? String, receiverid: receiverid as? String, senderid: senderid as? String, timestamp: time as? TimeInterval)
self.messages.append(messageValues)
dbRef.keepSynced(true)
self.ChatRoomTable.reloadData()
}
})
}
}
![Firebase database Image](https://i.stack.imgur.com/E4Z1C.png)
UPDATE
print("the data is \(DataSnapshot)")
Результат от него
the data is Snap (KxTbutCjzGQmIIb2OCGHrCyLNS53) {
"-LVx10-pBVxXTN-p88pT" = 1;
"-LVx10rtB0SL0y_mn4FU" = 1;
"-LVx4XosKZhkUDPgq0TI" = 1;
"-LVx4YT3NqYi1Tj12QFj" = 1;
"-LVx4_e8_OKwUrpAR_BM" = 1;
"-LVy2TEHGZD99ALhutbX" = 1;
"-LVy2dZB_mSIicC-qcSA" = 1;
"-LVy2xkg0oTT6bLbdC4T" = 1;
"-LVy3H6a__Tm_DKnM639" = 1;
}
Как получить доступ к этим узлам, которые (= 1) самостоятельно, или сохранить их в переменных для их использования.