皆さん、こんにちは。
BaaS@rakuzaを開発している中の人、がーしらです。主にバックエンドを担当しています。
一般的なBaaSってKVSなので1:nのデータモデルの場合、APIコールが増えがちですよね。そうでなくても正規化を崩して1モデルに冗長的な持ち方にするのがよくある常套手段です。そんななか弊社のBaaS@rakuzaはデータ管理の中で関連マスタという機能があって簡単に1:nのデータモデルが表現できます。そして、そういうモデルを一発取得できるAPIがあるんです!これ開発するの苦労したので皆さん是非使ってください。
外部結合APIとは
関連マスタに設定されてあるオブジェクトの情報をAPIにて取得する機能になります。
どんな時に使えるの?
関連マスタを持つモデルのデータを取得する際に使います。下階層のマスタを取得するので通常のマスタ取得に比べて速度の低下は代償となりますが、つながった関連マスタを複数回APIで取得するよりは速度の向上が見込めます。
注意点としては、関連マスタ設定の項目を多数持つマスタの場合、項目ごとに取得するので、こちらも場合によっては速度低下につながります。利用する際はそこら辺を加味して使用していただければと思います。
どんなことができるの?
例えば、以下のマスタの関係性がある場合を思い描いてください。店舗マスタの一覧を取得し、一覧に種別が設定されてあり、種別ごとに背景&文字色のバッジを表示する機能がある場合です。
個別のマスタでは店舗→店舗種別の順に取得する必要がありますが、外部結合では店舗マスタを取得した際に設定されてある種別の内容も合わせて取得することができます。
例)
店舗マスタ
┣コード
┗種別(関連マスタ:店舗種別)
店舗種別マスタ
┣コード
┣背景色
┣文字色
┗種別名
呼び出し方
Cordvaの場合、以下で呼び出します。
RKZClient.getDataListWithRelationObjects({取得するオブジェクトのID}, {取得する階層数}, {取得時の検索条件}, {取得時の並び順}, {成功時コールバック}, {失敗時コールバック});
-
取得するオブジェクトのID
- 一番上の階層で条件を指定するオブジェクトになります。上記例だと店舗マスタのIDとなります。
-
取得する階層数
- 最大3階層で何階層までオブジェクトを取得するかを指定します。上記例であれば1階層を指定すれば取得可能となります。
-
取得時の検索条件
- 取得時に適用する検索条件です。上記例では店舗マスタに適用する条件となります。
-
取得時の並び順
- 取得時に適用する並び順です。上記例では店舗マスタの項目で指定できます。
※詳細はこちら
いかがでしたでしょうか。上記機能を使えばAPIの呼び出し回数を減らすことができ、アプリの速度向上につながります。是非お試しください!