tyoshikawa1106のブログ

- Force.com Developer Blog -

Node:mongoDBのインストールを試してみました

Node.jsの開発で必要になるみたいなのでmongoDBのインストール方法について勉強しました。

f:id:tyoshikawa1106:20151008223648p:plain

MongoDB for GIANT Ideas | MongoDB

mongoDBはHomeBrewのbrewコマンドでインストールできるみたいです。HomeBrewの準備は以前行っていたのでこれで進めてみます。
f:id:tyoshikawa1106:20151008223526p:plain


インストール時のコマンドは次のとおりです。

$ brew install mongodb

f:id:tyoshikawa1106:20151008224731p:plain


インストール後、次のコマンドで実行できるようになります。

$ mongod

f:id:tyoshikawa1106:20151008224925p:plain


よく見たらエラーになってました。

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

ディレクトリを作成して、権限を追加という感じです。
f:id:tyoshikawa1106:20151009015828p:plain


・・・この手順であっているかちょっと自信は無いのですが、ひとまずエラーは解決しました。
f:id:tyoshikawa1106:20151009020031p:plain


開発時の流れ

Node.jsのExpressをつかってアプリを作成します。

$ express angular
$ cd angular
$ npm install

package.jsonを編集して「mongoose」をインストールできるようにします。

"mongoose": "4.1.10"

f:id:tyoshikawa1106:20151008225713p:plain

ちなみにmongooseのサイトはこちらだと思います。

Mongoose ODM v4.4.8

最後に「npm install」を実行して準備完了です。
f:id:tyoshikawa1106:20151008230106p:plain:w200


この後の流れはだいたいこんな感じです。

追記

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にアクセスできるようにする必要があるみたいです。
f:id:tyoshikawa1106:20151009021214p:plain


その後サーバ起動すると正常に実行できました。
f:id:tyoshikawa1106:20151009021306p:plain


この辺りはちょっとまだよくわかっていないのですが、ひとまずこれで動きました。続いてサーバとの通信処理を実装します。


『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の入力や追加、完了チェックなど基本的な部分は形になっています。
f:id:tyoshikawa1106:20151009230242p:plain


サーバへの保存や削除などを行うのREST処理のところのエラーが解決できませんでした。
f:id:tyoshikawa1106:20151009230554p:plain

f:id:tyoshikawa1106:20151009230604p:plain


赤枠内の処理でなんかエラーとなるので、値がうまく渡せていない感じ。。
f:id:tyoshikawa1106:20151009230843p:plain


NodeとAnuglarJSのアプリでMongoDBにデータ登録したりするところまで確認したかったのですが、もう少しAnuglarとMongoDBに詳しくならないと無理そうなので、続きはまたの機会にしようと思います。とりあえず現時点でのコードはこちらです。

mongodb起動コマンド

ちょっとメモ。こうするみたい。

$ mongod --dbpath=data