すぐに自ノードによって生成される子ノードの下に格納されているデータを取得する最良の方法を教えてください。 firebaseデータベースの自ノードによって生成された子ノードに格納されたデータを取得する方法は?
構造
book007
+---isbn //1st node
+---user //2nd node
+---userBooks //3rd node
| --TikubNudhfiI90uNKIij //3rd childnode
| +-Thuimfim9876HUIhinn . //3rd childnode AutoGeneratedID
| --ThufdsfsYI7ihhuhGGU
| --BookIsbn:"23432423" //need to get this node
| +-ThuisddfsdUUHKIhinn
コードは、それを行うには良い方法があるはずと私は信じて最適化されていません。
func fetchuser(){
print("Fetching UserBooks!!")
guard let uid = Auth.auth().currentUser?.uid else {
print("No UID on fetchBook!!")
return
}
Database.database().reference().child("userBooks").child(uid).observe(.childAdded, with: { (ChildKeysnapshot) in
let partkey = ChildKeysnapshot.key
print("partkey",partkey)
// user > keys > all books (godeep = isbneach book)
Database.database().reference().child("userBooks").child(uid).child(partkey).observeSingleEvent(of: .value, with: { (isbnShot) in
if let DictIsbn = isbnShot.value as?[String:AnyObject]{
let isbnCell = BkCells()
isbnCell.setValuesForKeys(DictIsbn)
print("New updateISBN OF THIS USER", isbnCell.bookISBN)
self.users.append(isbnCell)
print("IsbncellIS this",self.users.count)
}
print("This is Ron Before")
self.fetchUserIsbn()
}, withCancel: nil)
}, withCancel: nil)
}
質問は少し不明です。 「データを取得する」と言ったら、どういう意味ですか?この場合、userBookノードは.childAddedによって監視されています。これにより、新しく追加された子ノード*とそのすべての子データ*がアプリに表示されます。ノード* Thuimfim9876HUIhinn *が追加されたばかりのコードがあるので、その子、* ThufdsfsYI7ihhuhGGU *などの子どものすべてがその子の* BookIsbn *がスナップショットに追加されます。複数の子ノードがあり、それらを操作する方法を尋ねている場合は、それらのノードを独自のスナップショットとして反復処理できます。おそらく少し質問を明確にすると、より良い答えにつながるでしょう。 – Jay
/userBooks/+ -TikubNudhfiI90uNKIij/--Thuimfim9876HUIhinn内に複数の子ノードがありますか?それはThufdsfsYI7ihhuhGGU(/ BookIsbnを含む)です。 – Jay