Admin.js とは

  • node.js アプリケーションに簡単に管理画面を追加できる npm ライブラリ
    • 同一ドメインで /admin 配下に追加することが出来る
    • 管理画面では DB の CRUD ができる
      • 簡単な filter や sort もできる
    • 実装すればダッシュボード画面を用意できる
      • 簡単に作るためのしくみ(templateやimportなど)はないので、APIを使って一からReact.jsを使って画面を実装する必要がある
  • 複数の DB に対する CRUD が可能
    • DB アクセスは ORM/ODM を用いる
      • mongoose, sequelize, TypeORM に対応している
    • CRUD インタフェース(Resourceインタフェース) を定義すれば独自のリソース管理ができる
      • List, Delete する CLI コマンドをラップして Resource 定義する等も可能

所感

  • モデル(リソース) を定義することで DB アクセスが可能になるのは楽でよい
    • (管理画面以外の)アプリケーション用に実装したモデルがあれば流用できる
  • 簡単なフィルタができるくらいなので CRUD 操作以外の高度な機能は期待してはいけない
    • 特にダッシュボードは default は単なる(OSSとしてのAdmin.jsにおける) help リンク集なので役に立たない
  • phpmyadmin, phpldapadmin など、DB の種類ごとに管理画面を分ける必要がなく、インスタンスの運用コストは低く済ませられるのでよい
    • 但し、LDAP 操作をする ODM などはないので、LDAP 管理をするためには自前でリソースを定義する必要があり残念
  • 認証/認可は自前実装しないといけないので手間がかかって悩ましい
    • アプリケーションの認証/認可を流用はできるがコードの多重管理にはなる
    • ちゃんとした認可もできず、GUI 上で操作ボタンを非表示にできる程度
      • (やってはいないが) API を直接叩けば操作出来てしまうと思われる
      • ちゃんと認可する方法は公式ドキュメントには存在しない
  • API パスが resource 名のみ(resources/<リソース名>)なので複数 DB で同一 table 名があると名前を変えないといけないので残念
    • ex. MongoDB, PostgreSQL に user リソースがあった場合はどちらかを別名にしないといけない