ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Deno/TypeScript用SDKでのリレーションの使い方

f:id:mbaasdevrel:20200609182129j:plain

機能的にはまだまだ少ないですが、Deno/TypeScript用のSDKを開発中です。TypeScriptで作られており、VueやReact、Angularとの組み合わせでも利用できます。

NCMBMania/ncmb_deno: deno用のSDKです

今回はリレーションの使い方です。リレーションはデータストアのオブジェクト同士を結びつけるのに使います。ポインターが1対1なのに対して、リレーションは1対Nの関係を表現できます。

インストール方法

インストールは普段使っているnpmやYarnで可能です。

npm install ncmb_ts -S

初期化

初期化は次のように行います。

// Node.jsの場合
import NCMB, { NCMBUser, NCMBQuery } from 'ncmb_ts'
// denoの場合
import NCMB, { NCMBUser, NCMBQuery } from 'https://raw.githubusercontent.com/NCMBMania/ncmb_deno/master/deno/ncmb.ts'
const ncmb = new NCMB('YOUR_APPLICATION_KEY', 'YOUR_CLIENT_KEY')

リレーションを作成する

リレーションはリレーションを保存するオブジェクト(以下のコードではMainクラス)と、管理されるオブジェクト(以下のコードではTestクラス)に分かれます。addでリレーション対象のオブジェクトを追加し、Mainクラスに任意のフィールド名(今回はrelationフィールド)に保存します。

const item1 = new NCMBObject('Test');
await item1.set('message', 'Hello, world from item1').save();
const item2 = new NCMBObject('Test');
await item2.set('message', 'Hello, world from item2').save();

const relation = new NCMBRelation();
relation
  .add(item1)
  .add(item2);

const mainObj = new NCMBObject('Main');
await mainObj
  .set('relation', relation)
  .save();

リレーションからデータを取得する

次に Mainクラスから、紐付いているTestクラスのオブジェクトを取り出す方法です。これはTestクラスのクエリを利用します。そしてrelatedToメソッドに対して、Mainクラスのオブジェクトを指定します。

const query = new NCMBQuery('Test');
const ary = await query
  .relatedTo(mainObj, 'relation')
  .fetchAll();

リレーションからデータを削除する

既存のリレーションからデータを削除する場合は removeを使います。

const relation2 = new NCMBRelation('Test');
relation2.remove(item1);
await mainObj.set('relation', relation2).save();

注意点

リレーションへのデータの追加と削除を一つの保存処理では実行できません。一回の処理では追加、または削除だけになります。

まとめ

リレーションを使うことで、データをRDBMSのように関連付けて管理できるようになります。ぜひ使いこなしてください。

NCMBMania/ncmb_deno: deno用のSDKです

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。