0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LoopbackのAPIサンプルをMySQLに変更するステップ

Posted at

LoopbackはオープンソースのBaaSです。大元はIBMに買収されたようですが、フレームワークはオープンソースとして公開されています。

LoopBack - Node.js framework

デモ的なアプリが認証、トークン周りを含んでいて良い感じです。これをベースに拡張していこうと思った時にデータベースを用意するかと思います(デフォルトはオンメモリ)。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();
});

これでテーブルができあがってハッピー!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?