2017-08-30 9 views
0

とFirebaseデータベース内の子に子を追加:は、私は、次のFirebaseデータベースで働いていますスウィフト

enter image description here

私は次のコードで新しいchatIDsを追加します。

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

私が必要私が生成するランダムな文字列である個々の子に単一の子を追加することはできますが、私はFirebaseで長時間働いていないので、これを子供に追加する方法がわかりません。どのようにコードを書くことができますか?これを行う?

+1

いただきましたご質問、その後?あなたは既にそれに答えている – Siyavash

+0

値を設定せずに子を追加したいですか?あなたの質問は何ですか? –

答えて

0

私は何を探していることは、例として、私はキー、名前、日付を保存し、作成された、あなた発生childByAutoIdとchatIdsのチャイルズ、としています。この

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) 

だと思いますランダムなキーであるため、オブジェクトを検索するときにそのキーを見つけることができます。

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) 
+0

今私はこれを見ると思う。私はすぐにそれを試してみます。ありがとう – Sente

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 ?? "" 
     }) 
    } 
関連する問題