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

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

React Native SDK ver.2系の使い方【ロールの使い方】

f:id:mbaasdevrel:20180306160753p:plain

React NativeでmBaaSを使いやすくするReact Native SDKを非公式に開発しています。

NCMBMania/ncmb-react-native: NCMB SDK for React Native

これまでJavaScript SDKに似せる形で開発してきましたが、TypeScriptに沿った形で書くのに限界があったこと、React Native for Webでも使える形にしたかったので、バージョンアップすることにしました。これまでとは互換性はありませんが、より使いやすくなったはずです。

今回はロール(グループ)管理の使い方について解説します。

インストール

SDKのインストールはnpmで行います。

npm i ncmb-react-native

読み込み

import NCMB, { NCMBRole } from 'ncmb-react-native';

読み込めるライブラリはほかにも下記があります。

  • NCMBUser(会員管理)
  • NCMBObject(データストア。保存、更新、削除)
  • NCMBQuery(データストア。検索、取得)
  • NCMBFile(ファイルストア)
  • NCMBAcl(権限管理)
  • NCMBRole(ロール、ユーザやロールのグルーピング)
  • NCMBRequest(NCMBへのリクエスト用。通常は利用しません)
  • NCMBRelation(データストアのリレーション)
  • NCMBGeoPoint(位置情報�)
  • NCMBInstallation(デバイストークン)
  • NCMBPush(プッシュ通知)

初期化

SDKの初期化はアプリケーションキーとクライアントキーで行います。

const applicationKey = 'YOUR_APPLICATION_KEY';
const clientKey = 'YOUR_CLIENT_KEY';
new NCMB(applicationKey, clientKey);

新しいロールの作成

新しいロール(以下の例ではadmin)を作成するコードです。

const role = new NCMBRole;
role
  .set('roleName', 'admin');
await role.save();

ロールにユーザを追加する

adminロールにユーザを追加するコード例です。

// ロールを作成
const roleName = 'admin';
const role = new NCMBRole;
role
  .set('roleName', roleName);
await role.save();

// ユーザを準備
const user = new NCMBUser;
user
  .set('userName', 'tester')
  .set('password', 'tester');
await user.signUpByAccount();

// 追加して保存
await role
  .addUser(user)
  .save();

ロールの中にロールを作成

ロールは入れ子にして管理できます。

// 一つ目のロール
const roleName = 'admin';
const role = new NCMBRole;
role
  .set('roleName', roleName);
await role.save();

// 二つ目のロール
const role2 = new NCMBRole;
role2
  .set('roleName', 'admin2');
await role2.save();

// ロールにロールを追加して保存
await role
  .addRole(role2)
  .save();

ロールの検索

既存のロールを検索する例です。TypeScriptの場合、asで型を指定する方がいいでしょう。

const query = NCMBRole.query();
const role2 = await (query
  .equalTo('roleName', roleName)
  .fetch()) as NCMBRole;

ロールに所属しているユーザを取得

ロール管理下にあるユーザを取得する処理です。

// ロールを検索
const query = NCMBRole.query();
const role = await (query
  .equalTo('roleName', roleName)
  .fetch()) as NCMBRole;
// ロールに所属しているユーザを取得
const users = await role
  .fetchUser();

ロールに所属しているロールを取得

ロール管理下にあるロールを取得する処理です。

const query = NCMBRole.query();
const role = await (query
  .equalTo('roleName', roleName)
  .fetch()) as NCMBRole;
const roles = await role.fetchRole();

ロールの削除

既存のロールを削除する処理です。

await role.delete();

まとめ

React Native SDKはネイティブに依存する機能を除いて、すべての実装が完了しています。React Native(Webを含む)でサーバ機能が必要になりましたら、ぜひ使ってみてください。

ロールはデータのアクセス権限(ACL)を管理する上で大事な機能になります。特定のユーザを管理者権限にしたり、会員限定のコンテンツを提供する、特定グループ間でのみ読めるメッセージのやり取りといった際にも役立ちます。

NCMBMania/ncmb-react-native: NCMB SDK for React Native

中津川 篤司

中津川 篤司

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