ニフクラ mobile backendは3月末で終了します。
ニフクラ mobile backendからの移行先として、お勧めしているのがParse Serverです。設計思想が近く、変更するコード量が少なく済むのではないかと思います。
Parse ServerではWebアプリやCordova(Monaca)アプリ向けにSDKを提供していますが、ドキュメントは英語のみとなっています。そこで、各機能の使い方を解説します。今回はアクセス権限に関係するロールの操作について解説します。
JavaScript SDKのインストール
JavaScript SDKはCDN版を使うか、npmでインストールする方法があります。CDNの場合は、下記のタグでインストールできます。
<script src="https://npmcdn.com/parse/dist/parse.min.js"></script>
npmの場合は、下記のコマンドでインストールできます。
npm install parse
ただし、JavaScript SDKはTypeScript用の型定義を提供していませんので注意してください。
初期化
SDKの初期化は任意の場所で行えますが、npmの場合はまずインポートが必要です。
const Parse = require('parse');
// または
import Parse from 'parse';
React Nativeの場合は下記になります。
const Parse = require('parse/react-native.js');
// または
import Parse from 'parse/react-native';
さらにNode.js向けは以下になります。
const Parse = require('parse/node');
// または
import Parse from 'parse/dist/parse.min.js';
初期化はアプリIDとJavaScriptキーを指定します。さらにサーバーURLを指定します。
Parse.initialize("YOUR_APP_ID", "YOUR_JAVASCRIPT_KEY");
Parse.serverURL = 'http://YOUR_PARSE_SERVER:1337/parse'
ロールの作成
ロールは子ロールと、ユーザーを持つことができます。以下の例では、 Administrator
というロールを作成しています。
const roleACL = new Parse.ACL();
roleACL.setPublicReadAccess(true);
const role = new Parse.Role("Administrator", roleACL);
await role.save();
ロールにユーザーを追加する
既存のロールに対して、新しいユーザーを追加する場合のコードです。
const role = new Parse.Role(roleName, roleACL);
role.getUsers().add(usersToAddToRole);
role.getRoles().add(rolesToAddToRole);
await role.save();
オブジェクトにロールを設定する
オブジェクトにACL設定としてロールを設定する場合には setACL
を利用します。
const wallPost = new Parse.Object("WallPost");
const postACL = new Parse.ACL();
postACL.setRoleWriteAccess(moderators, true);
wallPost.setACL(postACL);
await wallPost.save();
ロールからユーザーを削除する
ロールからユーザーを消す場合には remove
を使います。もちろんACLの設定によっては、削除できない場合もあります。
role.getUsers().remove(user1);
role.getRoles().remove(user2);
await role.save()
既存のロールに新しいロールを追加する
ロールは入れ子の構造にできます。
role.getRoles().add(childRole);
await role.save();
子ロールを削除する
子ロールを削除する場合には remove
を使います。
role.getRoles().remove(childRole);
await role.save();
まとめ
Parse Serverのロールオブジェクトは、NCMBと変わらず利用できます。ユーザーを入れる形もそうですし、ロールを入れ子にできるのもNCMBと変わりません。
ACLの仕組みもParse ServerとNCMBで似ています。他のmBaaSと比べると、全体の修正量はそこまで多くないと思われます。載せ替え先として検討に挙げてください。