0

私はバックエンドレスを初めて使用し、リレーションに関するすべてのマニュアルを読みましたが、2 つのテーブル間に中間テーブルを作成する方法がまだわかりません。たとえば、users というテーブルと Events というテーブルがあります。ユーザーはイベントをサブスクライブできます。したがって、user_id と event_id を持つ新しいテーブル UserEvents が必要です。また、ユーザーが追加したすべてのイベントを取得するにはどうすればよいですか? 言い換えれば、バックエンドレスでジョインを行う方法は?(ジョインはなく、すべてがはるかに簡単だと思います)。どうもありがとうございました!

4

1 に答える 1

3

ここでは、2 つの個別の質問があります。

  1. オブジェクト間の関係を作成する方法は?
  2. ユーザーが作成したオブジェクトをロードする方法は?

最初のものから始めましょう:

オブジェクト間の関係を作成する方法は?

バックエンドレスを使用する場合、テーブルではなくオブジェクトの観点から考えることが重要です。たとえば、Order というエンティティがあり、そこに OrderItem オブジェクトのコレクションが含まれている場合、それがデータ構造です。コンソールでテーブルを事前に作成する必要はありません。OrderItems のコレクションを持つ Order オブジェクトを初めて保存するときに、Backendless が自動的に作成します。ただし、コンソールで手動で行う場合は、次の手順に従います。

  1. コンソールにログインし、アプリを選択して、[データ] をクリックします
  2. テーブル Order を作成します (テーブルには単数形で名前を付ける方がよいため、Order ではなく Order とします)。
  3. 新しいテーブルを作成すると (左下隅にある [+] ボタンをクリック)、データ列を追加できるようにスキーマ エディターに切り替えるようにコンソールから求められます。列は、テーブルのレコードを表すクラスのプロパティに対応します。
  4. Order テーブルが配置されたので、OrderItem テーブルに対してプロセスを繰り返します。
  5. 両方のテーブルが存在したら、テーブルを一緒に「リンク」する必要があります。そのリンクは、1 対 1 または 1 対多の関係を確立します。これを行うには、Order テーブルを選択し、右上隅にある[テーブル スキーマと権限] の赤いボタンをクリックします。
  6. [関係を追加] ボタンをクリックします。
  7. 表示されるポップアップで、注文アイテム オブジェクトのコレクションを含むプロパティを作成する必要があります。そのプロパティに「orderItems」という名前を付けます (ここでは複数形にしてもかまいません)。ポップアップの右側で、OrderItem テーブルを選択します。[多重度] ドロップダウンで [多] を選択します。
  8. [保存]をクリックします。この時点で、関係が確立されます。

それが機能していることを確認するには、テーブルを操作するためのすべてのソース コードを提供するコード生成モジュールを使用できます。コード生成アイコンをクリックします。Androidセクションで、IDE ブロックのEclipseまたはIDEAを選択し、定義済みデータ テーブルの Java クラス オプションをクリックします。プロジェクトのダウンロードをクリックします。バックエンドレスは、テーブルに対して完全な CRUD (作成、取得、更新、削除) 操作を実行できるクライアント側クラスのソース コードを含む ZIP ファイルを生成します。

このドキュメントでは、関連データの操作方法について説明しています。たとえば、関連オブジェクトを取得するためのアプローチと API を参照してください。

ユーザーが作成したオブジェクトをロードする方法の問題に関しては、物事はより単純です。では、2 番目の質問に進みます。

ユーザーが作成したオブジェクトをロードする方法は?

上記のアプローチは、組み込みの Users テーブルを他のテーブルとリンクする場合にも同様に機能します。ただし、特に Users テーブルでは、そのリンク/関係は必要ありません。その理由は、Backendless は、オブジェクトを作成したユーザーである「所有者」の ID を使用して、作成されたオブジェクトに自動的にタグを付けるためです。その「タグ」は、Users テーブルの特別な ownerId プロパティで確認できます。ユーザーに属するオブジェクトを取得できるようにするには、ユーザーが作成したオブジェクトを含むテーブルのセキュリティ パーミッションを変更する必要があります。

  1. コンソールにログインし、アプリを選択して [データ] アイコンをクリックします。
  2. ユーザーが作成したオブジェクトを含むテーブルを選択します。
  3. 画面の右上隅にある[ Table Security and Permissions ] 赤いボタンをクリックします。
  4. [役割の権限] メニュー項目をクリックします。
  5. Find列とAuthenticatedUser行の交点にあるセルを見つけます。赤い十字が表示されるまでセルをクリックします。
  6. Find列とNotAuthenticatedUser行の交点について、前の手順を繰り返します。

この時点で、認証されたユーザーと認証されていない (ゲスト) ユーザーの両方に対して、テーブルへのすべてのアクセスを制限しました。次のステップでは、所有者が作成したオブジェクトを取得できるようにします。

  1. [所有者ポリシー] メニュー項目をクリックします。
  2. 緑色のチェック マークが表示されるまで、[検索] 列のセルをクリックします。
  3. この時点で、そのテーブルの Find メソッドのいずれかを呼び出すと、Backendless は現在ログインしているユーザーに属するオブジェクトのみを返します。
于 2015-01-08T17:55:32.910 に答える