あなたの問題はパブリッシュ/サブスクライブメッセージングシステムカフカのように。
問題を正しく理解している場合は、アプリケーションユーザーの現在の場所を取得した後、最も近い都市または地域のフィードを取得することができます。現在、この目的に役立つさまざまなツールや技術があります(例:カフカ)。しかし、この問題はFirebase特有のものであり、サーバ側のコーディングは必要ありません。あなたの問題を解決する方法についてはわかりませんが、問題を解決する方法を考えてから、Firebaseの方法でソリューションを複製しようとすることができます。
あなたのアプリケーションの各ユーザーからの投稿がダンプされるチャンネルを考えているかもしれません。各投稿にはそれぞれの場所を識別するキーがあります。ここでは、アプリケーションの各ユーザーを、そのチャネルの特定のトピックを持つサブスクライバと考えてみましょう。任意の加入者(つまり、アプリケーションのユーザー)が来たら、チャネルはその加入者に必要な投稿(近隣の都市の投稿など)を提供します。例えば、我々はキーを備え、そのチャネルでいくつかの記事、NY
、Dhaka
、Khulna
、NJ
、London
、Seoul
、Sydney
などを持っている
をすることができます今すぐJessore
から誰かが自分のチャンネルに購読しているし、彼のために近所の都市でありますDhaka
およびKhulna
。したがって、サブスクライバにはキーDhaka, Khulna
があり、チャネルがキーを見ると、キーDhaka
とKhulna
を含む場所を含む投稿が配信されます。
Firebaseでこの動作をどのように達成できますか?それが現時点で直面している課題です。だから、channel
ノードにすべての場所からのすべての投稿(前述のチャンネルのようなもの)を持たせてみましょう。データ構造の例を次に示します。
channel
- post1
- content : "this city is beautiful"
- location: "Khulna"
- post2
- content : "This city is okay"
- location: "Dhaka"
- post3
- content : "London, here I come"
- location: "London"
- post4
- content : "leaving the city"
- location: "NY"
は今、あなたがそのテーブルにあなたの現在の街を通過したときに、あなたに最寄りの都市を教えてくれる都市間distance-mapping
を、持っている必要があります。あなたは与えられた都市のためのあなた自身の距離のマッピングを見つける必要があります。あなたの現在の都市はJessore
です。距離マッピングテーブルは、最も近い都市を返します(Dhaka
とKhulna
など)。これは構築するのに複雑なものかもしれません。しかし、いったん関係マッピングが構築されると、それは単に更新する必要があります。たとえば、distance-maping
データの最終状態は次のようになります。あなたは、ユーザーの現在位置を取得するとき
distance-mapping
- Dhaka
- Khulna
- Jessore
- Khulna
- Dhaka
- Jessore
- Jessore
- Dhaka
- Khulna
- Vegas
- NY
- NY
- Boston
- Vegas
さて、あなたは簡単にFirebaseでdistance-mapping
テーブルから最寄りの都市を見つけることができます。都市をchannel
テーブルに渡して、その特定のキーを持つ投稿を取得します。
Firebaseの複雑なクエリに関するいくつかの回答があります。あなたは、これらから選択されたクエリパラメータを渡すのに役立つかもしれません。
役に立てば幸い!
あなたは完全に私の質問をしているわけではないと思うが、私はあなたが私の問題を理解していると感じ、あなたに私にいくつかのヒントを与えていると感じている。それについて話すためにあなたのメールを受け取ることはできますか?その答えは質問に合っており、私は正しいものとしてそれをチェックすると思うでしょう。 –