Firebase Realtime DatabaseはNoSQLデータベースであり、リスト内の子孫の直接の子孫によってのみフィルタリングすることができます。そのため、あなたはよりフラットなデータ構造を使用する必要がある、とbasicInfo
、fullInfo
にあなたのフィールドを分割しないようになります。
users
|- userId
|- name: "John"
|- age: 17
|- gender: "m"
|- birthday: "10.10.2000"
...
このアプローチでは、あなたはusers
ノードにリスナーを添付してから使用して、子の値によってフィルタリングすることができますqueryOrderedByChild
およびqueryEqualToValue
の方法。例えば、スウィフトでこのような何か:あなたの構造のいずれかで
Database.database().reference().child("users").queryOrderedByChild("name").queryEqualToValue("(some name)").observeSingleEventOfType(.Value, with: { snap in
// Do your thing with snap
})
は、あなたがqueryLimitedToFirst
とqueryLimitedToLast
メソッドを使用して結果を制限することができます。例えば、filtering data section of the documentationから:フィルタリングおよび制限の詳細については
// Last 100 posts, these are automatically the 100 most recent
// due to sorting by push() keys
let recentPostsQuery = (ref?.child("posts").queryLimited(toFirst: 100))!
:
次の例では、例ブログアプリは、すべてのユーザーが100件ので最も最近の投稿のリストを取得する方法を示していますSwift/iOSのFirebaseデータについては、working with lists of data on iOS documentationを参照してください。
私はあなたの情報のデータを1つのタブの下に構造化する必要があると思います。もっとNoSQLのアプローチをしたいのであれば、リアルタイムDBの代わりにFirestoreを使うことができます。あなたが実行する主要なクエリを持っていない限り、情報を分割することはあまり意味がありません。一度、あなたは 'queryorderbyKey()'を簡単に実行します。 –
実際には、データベース内で検索を行う必要があります。一部のユーザーをLIKE句で検索するだけです。 Firebase FirestoreとFirebaseデータベース。ありがとう! –
両方を使用することはお勧めできません。データストア間のデータのやりとりを大事にする必要があるからです。重要なのはデータモデル/アーキテクチャです。 –