0

私は最近、自分のアプリケーションでバックエンドをサービス プラットフォームとして使用することの威力を発見しました。それらは素晴らしいものですが、問題は、これらのプラットフォームで非常に多くの固有のデータベース構造の実装をガイドするチュートリアルがあまりないことです。そのため、この一般的なシナリオを考え出しました明確にする

構造は、ユーザーが投稿を作成し、それにハッシュタグ (最大 'n') を添付できることです。これらのハッシュタグは明らかに多くの投稿に添付できます。これは典型的な多対多の関係シナリオです。次のクエリの実装?

  1. user テーブルには location 列があり、クエリは、現在のユーザーの場所から 50 マイル以内にある特定のハッシュタグのすべての投稿を取得することですか?
  2. 現在のユーザーの場所周辺で人気のあるハッシュタグ (他のユーザーが作成した投稿に添付されている)

PSこれらは私が考えることができるいくつかの一般的なシナリオでした.Parseコミュニティに役立つと思われる場合は、回答に他の一般的なシナリオを追加してください.

4

1 に答える 1

1

Parse は完全なリレーショナル データベースを提供しませんが、リレーショナル列をデータ クラスに追加することで、クラス間の多対多の関連付けを可能にします。したがって、たとえば、クラスを作成し、関連付けられたハッシュタグを含むhashtag関係列をクラスに追加できます。クエリ 1 は、 class に対するクエリを作成し、必要なハッシュタグを指定してから、それをクラスに対するクエリのサブクエリとして追加するpostことで回答できます。含まれているクエリでは、ユーザーの場所の近くでを探していることを指定します。例えばhashtagpostpost

PFQuery *tagQuery = [PFQuery queryWithClassName:@"hashtag"];
[tagQuery whereKey:@"tagName" equalTo:@"hash_tag_name"];

PFQuery *postQuery = [PFQuery queryWithClassName:@"post"];
[postQuery whereKey:@"hashtags" matchesQuery:tagQuery];
[postQuery whereKey:@"location" nearGeoPoint:userLocation withinMiles:50.0];

[postQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    //Do something with results
}];

1 つの Parse クエリで 2 番目のクエリのデータを引き出す簡単な方法は思いつきません。1 つのアプローチは、現在の場所の近くにある を取得し、postそれらを繰り返し処理して、それぞれに関連付けられているタグを特定する (そしてその頻度をカウントする) ことです。

別のオプションは、投稿に対してタグを文字列の配列として保存することです。whereKey:equalTo:次に、 (単一のタグ) またはwhereKey:containedIn:(複数のタグ)を使用してタグでクエリを実行できます。このアプローチでは、他の場所に存在するタグを追跡する必要があります。

于 2013-08-05T04:10:05.470 に答える