LoopbackはオープンソースのBaaSです。大元はIBMに買収されたようですが、フレームワークはオープンソースとして公開されています。
デモ的なアプリが認証、トークン周りを含んでいて良い感じです。これをベースに拡張していこうと思った時にデータベースを用意するかと思います(デフォルトはオンメモリ)。MongoDBは運用大変なイメージしかないのでMySQLを使ってみます。
データソースの追加
$ lb datasource
後はウィザードに沿って答えていくだけ。ライブラリのインストールもやってくれます。
$ lb datasource
? データ・ソース名を入力してください: mysql
? mysql のコネクターを選択します: MySQL (StrongLoop でサポートされます)
? Connection String url to override other settings (eg: mysql://user:pass@host/db): mysql://xxx:yyy@127.0.0.1/zzz
? host: 127.0.0.1
? port:
? user: xxx
? password: ******
? database: zzz
? loopback-connector-mysql@^2.2 のインストール Yes
+ loopback-connector-mysql@2.4.1
モデルのリソース変更
Loopbackはモデルごとにリソースが設定できるようです。 server/model-config.json
を編集します。
"User": {
"dataSource": "mysql" // <- db から自分で指定したリソース名に変更
},
他のリソースもすべて変更します。
テーブル作成
で、既存のスキーマはオンメモリに展開されているのでMySQLに展開します。 Creating a database schema from models | LoopBack Documentationにあるのですが、 server/create-lb-tables.js
を作成します。
var server = require('./server');
var ds = server.dataSources.mysql; // <- mysql は自分で指定したリソース名
var lbTables = ['User', 'AccessToken', 'ACL', 'RoleMapping', 'Role'];
ds.automigrate(lbTables, function(er) {
if (er) throw er;
console.log('Loopback tables [' + lbTables + '] created in ', ds.adapter.name);
ds.disconnect();
});
これでテーブルができあがってハッピー!