Node.jsの開発で必要になるみたいなのでmongoDBのインストール方法について勉強しました。
mongoDBはHomeBrewのbrewコマンドでインストールできるみたいです。HomeBrewの準備は以前行っていたのでこれで進めてみます。
インストール時のコマンドは次のとおりです。
$ brew install mongodb
インストール後、次のコマンドで実行できるようになります。
$ mongod
よく見たらエラーになってました。
exception in initAndListen: 29 Data directory /data/db not found., terminating
data/dbのディレクトリが無いということ。cdコマンドで「/usr/local/Cellar/mongodb」にいる状態で以下のコマンドを実行します。
$ sudo mkdir -p data/db/ $ sudo chown `id -u` /data/db
ディレクトリを作成して、権限を追加という感じです。
・・・この手順であっているかちょっと自信は無いのですが、ひとまずエラーは解決しました。
開発時の流れ
Node.jsのExpressをつかってアプリを作成します。
$ express angular $ cd angular $ npm install
package.jsonを編集して「mongoose」をインストールできるようにします。
"mongoose": "4.1.10"
ちなみにmongooseのサイトはこちらだと思います。
最後に「npm install」を実行して準備完了です。
この後の流れはだいたいこんな感じです。
追記
mongooseは次のコマンドでインストールすることもできます。-Sをつけるとpackage.jsonに自動で追加されます。
$ npm install -S mongoose
サーバの処理を作成する
- [1] routes/index.jsに処理を実装します。
- [2] app.jsにHTTP methodで呼び出す処理を設定します。
- [3] var routes = require('./routes');でindex.jsの読み込みを行います。そのとき、module.exportsを返します。
サーバ起動は次のコマンドです。
$ npm start
サーバ起動時の補足
次のエラーに遭遇しました。
Most middleware (like favicon) is no longer bundled with Express and must be installed separately.
Nodeのバージョンを4.xにしていたことにより、使い方が変更された箇所があるみたいです。このサイトが参考になりました。
とりあえずapp.jsを次のようにしました。
またpackage.jsonを次のように変更してみました。
これでサーバ起動は次のコマンドで実行できます。
$ node app.js
エラーを回避するために今回はコメントアウトで対応してしまいましたが、実際にはNode4.x用の対応方法があると思います。その辺は又の機会に調べてみようと思います。
mongodbを使用するときの注意
サーバ起動前に『mongod』コマンドでmongoDBにアクセスできるようにする必要があるみたいです。
その後サーバ起動すると正常に実行できました。
この辺りはちょっとまだよくわかっていないのですが、ひとまずこれで動きました。続いてサーバとの通信処理を実装します。
『angular-resource.js』を利用すればAngularJSからRESTでサーバと通信ができるみたいです。一応次のリンク先からダウンロードできそうでした。
bowerでもインストールできます。
$ bower install angular-resource
CDNでも利用できそうでした。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular-resource.min.js"></script>
・・・と確認できたのはここまで。あとREST処理でサーバに保存したりするだけだったのですが、一部エラーを解決できませんでした。
とりあえずToDoの入力や追加、完了チェックなど基本的な部分は形になっています。
サーバへの保存や削除などを行うのREST処理のところのエラーが解決できませんでした。
赤枠内の処理でなんかエラーとなるので、値がうまく渡せていない感じ。。
NodeとAnuglarJSのアプリでMongoDBにデータ登録したりするところまで確認したかったのですが、もう少しAnuglarとMongoDBに詳しくならないと無理そうなので、続きはまたの機会にしようと思います。とりあえず現時点でのコードはこちらです。
mongodb起動コマンド
ちょっとメモ。こうするみたい。
$ mongod --dbpath=data