使用Swift将孩子添加到Firebase数据库中的孩子

时间:2017-08-30 02:53:28

标签: ios swift firebase firebase-realtime-database

我正在使用以下Firebase数据库:

enter image description here

我使用以下代码添加新的chatID:

DatabaseReference.users(uid: self.uid).reference().child("chatIds/\(chat.uid)").setValue(chat.uid)

我需要向单个"chatIDs"添加一个孩子,这是一个我将生成的随机字符串但是我没有使用Firebase这么长时间,所以我不知道如何添加这个孩子in。如何编写代码来执行此操作?

3 个答案:

答案 0 :(得分:1)

根据您的数据库结构,您想要的可能实现是:

let ref = Database.database().reference()

// Generating the chat id
let refChats = ref.child("chats")
let refChat = refChats.childByAutoId()

// Accessing the "chatIds branch" from a user based on
// his id 
let currentUserId = self.uid
let refUsers = ref.child("users")
let refUser = refUsers.child(currentUserId)
let refUserChatIds = refUser.child("chatIds")

// Setting the new Chat Id key created before
// on the "chatIds branch"
let chatIdKey = refChat.key
let refUserChatId = refUserChatIds.child(chatIdKey)
refUserChatIds.setValue(chatIdKey)

答案 1 :(得分:0)

我认为您正在寻找的是

    let key = firebaseRef.child("users").child("\(String(describing: uid))").child("chatIds").childByAutoId().key

    let timestamp = Int(Date().timeIntervalSince1970)

    let child = ["key":key,
                 "name": name as String,
                 "date": birth as String,
                 "created": "\(timestamp)"]

    firebaseRef.child("users").child("\(String(describing: uid!))").child("chatIds").child(key).setValue(child)

例如,我将密钥,名称,日期和创建的聊天项目childByAutoIdgetBothURLs()一起保存,生成随机密钥,以便在搜索对象时找到它。 / p>

答案 2 :(得分:0)

    import UIKit
    import Firebase

    class ChatListVC: UIViewController {
            var ref: FIRDatabaseReference!
            var messages: [FIRDataSnapshot]! = []
            fileprivate var _refHandle: FIRDatabaseHandle?
override func viewDidLoad() {
        super.viewDidLoad()
self.userDetail()
}
        func userDetail(){
        _refHandle = self.ref.child("users").child("child id").observe(.value, with: { [weak self] (snapshot) -> Void in
                    guard let strongSelf = self else { return }
                    guard let dict = snapshot.value as? [String:Any] else { return }
        //access data from dict

        let MyName = dict["MyName"] as? String ?? ""
         })
    }