Как добраться до конкретного узла в базе данных Firebase в режиме реального времени - PullRequest
0 голосов
/ 11 января 2019

Я получил ключ сообщений, который был создан 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

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) самостоятельно, или сохранить их в переменных для их использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...