この広告は、90日以上更新していないブログに表示しています。
内容はほぼCreating a REST API using Node.js, Express, and MongoDB | Christophe Coenraetsのままです。
終盤での mondodb のアクセスの部分のみ元サイトと違い mongoose を使ったコードに置き換えてみました。
環境は Windows8 prox64 です。
これで Node.js の使用準備はOK。
node server.js
http://localhost:3000 にアクセスすると、"Hello, World"の文字列が返ってくることが確認できます。
ExpressはNode.jsの軽量Webアプリケーションフレームワークです。少し調べたところ、Express だと規模が大きくなると1つのファイルに色んな処理が入って管理が大変になるらしいです。
将来的にはSailsというやつがいいのかな?この辺りは今後の調査対象ということで。
では、本題に戻って。
# プロキシ環境の場合は事前にプロキシを指定しておくnpm configset proxy http://url:portnpm install
Expressモジュールがnode_modulesのサブフォルダにインストールされます。
server.js を修正してサーバーを再起動し、Express が動作していることを確認します。
以下のアドレスにアクセスすると、それぞれの JSON が返ってくることが確認できます。
| データベース内のすべてのワインを取得: | http://localhost:3000/wines |
| 特定のIDでワインを取得: | http://localhost:3000/wines/1 |
ドメインオブジェクト(今回は wine)をモジュール化して server.js から分離します。
E:\Users\bin\mongodb\bin\mongod.exe --dbpath"E:\Users\bin\mongodb\data"
↑を実行して、↓と出ればOK。
・・・Wed Jul1015:12:29.751 [websvr] admin web console waiting for connections on port28017Wed Jul1015:12:29.751 [initandlisten] waiting for connections on port27017
npm install
mongooseについては、以下のサイトを参考にしました。
Mongoose API v3.6.14
node.js + mongoose + mongodbで遊ぶ - Last Verse
node.js から MongoDB にアクセス (Mongoose の紹介) - KrdLab's blog
公式サイトのapi については、model.jsでメソッド名を見てればなんとなく用途はわかります。show code をクリックすれば具体的な実装も見れます。
URIの設計は以下になります。
| Method | URL | アクション |
| GET | /wines | すべてのワインを取り出す |
| GET | /wines/:id | 指定された_idのワインを取り出す |
| POST | /wines | 新しいワインを追加 |
| PUT | /wines/:id | 指定_idのワインを更新 |
| DELETE | /wines/:id | 指定された_idのワインを削除 |
server.js と wine.js を以下のように書き換えます。
追加削除は問題なく出来たのですが、更新の部分で少し嵌りました。findByIdAndUpdate の第2引数に更新したい Object を入れるのですが、この Object は _id の要素を持っていてはダメです。
そのため、前の行で _id 要素を delete しているわけです。参考にしていたサイトは特定の要素を指定して更新していたので、最初気付きませんでした。よく考えれば至極当然のことなのですが。
サーバーを再起動して、上記URLを踏んで確認します。
といっても、今の状態で GET 以外のメソッドを実行することは難しいですので、元サイトではcurl and libcurlを利用してコマンドで確認しています。
最後の確認まで出来ていないけど、ここまで。
元サイトや参考にしていた下記の書籍は、mondoDBのドライバを直接叩いていましたが、個人的には mongoose はAPIが分かりやすく、好みでした。

プロになるためのJavaScript入門 ~node.js、Backbone.js、HTML5、jQuery-Mobile (Software Design plus)
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。