JavaScript SDKを使うことでmBaaSの各種機能を簡単に扱えるようになりますが、その機能は基本的なものだけになります。そのため一つ一つの処理を手順通りに行うとコード量が増えがちです。
例
特に多くなるのが権限周りの処理です。例えば以下のような権限を設定しようとします。
- user1に読み取り権限を付与
- user2に読み取り、書き込み権限を付与
- adminグループに読み取り、書き込み権限を付与
- userグループに読み込み権限を付与
- 全体に対して読み込み権限を付与
実際には全体に対して付与しているので幾つかの権限は不要ですが、サンプルとして考えてください。
このような権限付与を行う場合、コードでは次のように表現されます。
const acl = new ncmb.Acl(); acl .setUserReadAccess(user1, true) .setUserReadAccess(user2, true) .setUserWriteAccess(user2, true) .setRoleReadAccess('admin', true) .setRoleWriteAccess('admin', true) .setRoleReadAccess('user', true) .setPublicReadAccess(true)
改善
これはかなり長いコードで冗長的です。そこでmBaaSを拡張するライブラリ ncmb-extend の中に機能を追加してAclをまとめて設定できるようにしました。 ncmb.AclEx
がそれで、一つ目の引数に読み取り、二つ目の引数に書き込み権限を指定しします。
同じ内容を定義する場合、次のようになります。
const acl = ncmb.AclEx( // 読み取りアクセス ['*', 'admin', 'user', user1, user2], // 書き込みアクセス ['admin', user2] ); console.log(acl.toJSON()); /* { '*': { read: true }, 'role:admin': { read: true, write: true }, 'role:user': { read: true }, aaa: { read: true }, bbb: { read: true, write: true } } */
使い方
ncmb-extend はNode.jsのパッケージ管理システムであるnpmでインストールできます。
$ npm install ncmb-extend --save
後はこのライブラリを読み込むだけです
require('ncmb-extend');
読み込みが終われば普段通りの使い方で ncmb.AclEx が使えます。
最後に
JavaScript SDKをそのまま津アウトどうしてもコード量が増えがちです。自分たちのプロジェクトに合わせて拡張して使いやすくメンテナンスしてください。