は、これは、1つの答えを与えることは非常に困難です。ここではそのcrazynessでは、その点に
movies
movie_0
title: "Monty Python and the Holy Grail"
reviewed_by
uid_1: tre
reviews
review_0: true
reviews
review_0
movie_id: "movie_0"
uid: "uid_1"
review: "Best movie evah"
users
uid_0
name: "Tim"
reviewed_movies:
movie_0: true
reviews
review_0: true
を説明するために架橋され、二重の参照構造です、次のことができます。
query movies for which users reviewed it or which reviews
query reviews for certain users, certain movies and that the actual review was
query users for names, which movies that user reviewed and what the reviews were
そこで質問です。あなたは何を問い合せる必要がありますか?
は、それがすべてのユーザーのレビューを言って表示する時が来たとき、私は、ユーザーのIDを使用して データベースを照会しますあなたの#3
を取ることができますか?
私が提示した構造は、すべてのユーザーレビューを取得したい場合は、まったくクエリする必要はありません。あなたは、直接あなたがuidはユーザーのUIDでは全てのレビューをレビューノードを照会でき、ユーザノード
let ref = fbRef.child("users").child("uid_0").child("reviews")
ref.observe...
は、あなたがレビューを同様に
を参照して取得するために結果を反復処理することができますことを確認します質問。
私は、これは具体的な答えではない実現が、それは、ガイドにコメントの
EDIT
一つを提供しませんが、特定の質問ので、私はそれをこのように対処しましょうでした。
唯一の目的は、特定の映画のすべてのレビューを見ることだとします。構造を大幅に単純化することができます:
movies
movie_0
title: "Monty Python and the Holy Grail"
reviews
review_0
movie_id: "movie_0"
uid: "uid_1"
review: "Best movie evah"
users
uid_1
name: "Tim"
次に、movie_0のムービーとムービーIDを知っているとします。レビューとユーザーを取得するには、このようなものが動作します
let reviewsRef = self.ref.child("reviews")
let query = reviewsRef.queryOrdered(byChild: "movie_id").queryEqual(toValue: "movie_0")
query.observeSingleEvent(of: .value) { snapshot in
for child in snapshot.children {
let snap = child as! DataSnapshot
let dict = snap.value as! [String: Any]
let uid = dict["uid"] as! String
let review = dict["review"] as! String
let userRef = self.ref.child("users").child(uid)
userRef.observeSingleEvent(of: .value, with: { userSnapshot in
let userDict = userSnapshot.value as! [String: Any]
let userName = userDict["name"] as! String
print("\(userName) said \(review)")
})
}
}
出典
2017-12-05 19:29:14
Jay
これは素晴らしい応答です。だから基本的に私は特定の映画のすべてのレビューを見たいと思ったら、私はその直接行うことができますか?私は本当の質問はこれだと思います。レビューを保存するための機能コードを実行すると、3つの異なる場所にレビューが保存されるでしょうか?ユーザとムービーIDが子としてある1つのレビューノードとは対照的に、ユーザ、ムービー、レビュー。 – ROKOKO
あなたはある種の教育者ですか?あなたは非常に明確で簡潔です。ノード内にネストされた子にアクセスしてそれらのすべてを反復する前のあなたの応答は非常に役に立ち、私は1トン以上を把握するのに役立ちました。 – ROKOKO
私が理解していないことの1つは、あなたが提示した「真の」値です。 – ROKOKO