データストアを安全に保つために必要なのがACL(アクセスコントロール)です。NCMBでは以下の3つのACLに対応しています。
- 全体に対する読み込み、書き込み権限
- 特定のロール(グループ)に対する読み込み、書き込み権限
- 特定のユーザに対する読み込み、書き込み権限
現在作成中の非公式なReact Native SDKでもAclに対応しました。
使い方
初期化は次のように行います。JavaScript SDKと同じ方式です。
import NCMB from 'react-native-ncmb'; const applicationKey = 'YOUR_APPLICATION_KEY'; const clientKey = 'YOUR_CLIENT_KEY'; const ncmb = new NCMB(applicationKey, clientKey);
データストアのクラスを作成
次にクラスの作成です。これもJavaScript SDKと同じ形にしています。
const Item = ncmb.DataStore('ReactNative');
インスタンスの作成
データストアのインスタンスを作成する処理はJavaScript SDKとちょっと異なるので注意してください。
const item = Item.new;
Aclの設定
ここでようやくAclが使えます。
const acl = new ncmb.Acl();
用意されているのは以下のメソッドです。
- setPublicReadAccess
- setPublicWriteAccess
- setRoleReadAccess
- setRoleWriteAccess
- setUserReadAccess
- setUserWriteAccess
使い方はJavaScript SDKと変わりません。
const Item = ncmb.DataStore('ReactNative'); const item = Item.item(); const acl = new ncmb.Acl(); acl.setPublicReadAccess(true) .setPublicWriteAccess(true) .setRoleReadAccess('Pro', true) .setUserReadAccess(user, true); item .set('msg', 'Hello World') .set('test', 'Hoge') .set('acl', acl) .save() .then((data) => { })
認証の変更
また、これに伴って認証が少し変わっています。JavaScript SDKに合わせた実装になっています。以下は会員登録です。
const userName = 'reactTest'; const password = 'reactTest'; const user = new ncmb.User(); user .set('userName', userName) .set('password', password) .signUpByAccount() .then((user) => { console.log('user', user); }, (err) => { console.log(err) })
ログインです。
ncmb.User .login(userName, password) .then((user) => { });
まとめ
これでデータストアの基本的なCRUD操作とAcl、認証、プッシュ通知に対応しました。React Nativeアプリでもニフクラ mobile backendを活用してください。ドキュメントも不足していますので、ぜひフィードバックいただければ嬉しいです。
コードは NCMBMania/react-native-ncmb: Use Nifty mobile backend 's REST API to correspond to React Native にあります。機能要望があればIssueまでお寄せください。オリジナルを開発したsatsuki0221 (yugo)に感謝します!