LoopBackのプラグインと設定

#loopback, #node, #plugin

バックエンドにLoopBackをということで、実践投入時には割と必要になるであろうプラグインや設定をメモしておく。

作成日、更新日を自動セット

論理削除

不要なAPIを削除

例えば、アクセストークンを取得するAPIの削除

1
2
3
4
5
6
7
User.disableRemoteMethodByName('prototype.__count__accessTokens');
User.disableRemoteMethodByName('prototype.__create__accessTokens');
User.disableRemoteMethodByName('prototype.__delete__accessTokens');
User.disableRemoteMethodByName('prototype.__destroyById__accessTokens');
User.disableRemoteMethodByName('prototype.__findById__accessTokens');
User.disableRemoteMethodByName('prototype.__get__accessTokens');
User.disableRemoteMethodByName('prototype.__updateById__accessTokens');

https://qiita.com/shimitei/items/7ed41944a330873c6b6f

idをuuidに変更する

https://stackoverflow.com/questions/36633516/can-i-use-non-sequential-id-for-loopback-model

1
2
3
4
5
"id": {
"type": "string",
"id": true,
"defaultFn": "guid"
}

SSL対応

ログインユーザーの情報を取得しておく

モデルが選べてカスタム条件も入れられるのでよさげ。
公式のドキュメントに載ってる実装の拡張。

プロセスマネージャー

pm2でも良いんだけど、せっかく純正のプロセスマネージャーがあるので使ってみる。

1
2
3
yarn global add strongloop
cd app-dir
slc start

TODO: サーバー再起動時のプロセス自動起動の方法を確認する。

チームセキュリティー

ロールによるACLはデフォルトで実装されているけれど、チームによるアクセス制限を掛けたい場合。
例えば、「チームAに所属している人はチームAのデータのみ取得できるようにする」とか。

実装した後にこのプラグインの存在に気づいてショック!


これで大体の土台は整えられると思う。
あとはOAuthやJWTなどの認証周りだろうか。