7分半で作るNode.js+MongoDBアプリ
先日のJJUG SpringのLTをしてきた「7分半で作るNode.js+MongoDBアプリ」の動画を撮り直しました。
本番ではmongoose.Schemaのところをmongoose.modelとしてしまい、まさかのライブデバッグを初めるハメになり、結果として13分となってしまいました。
リベンジとして今日何回かトライしたところ10分を2分半も上回る7分半、スリークォーターの記録を出すことができました。
動画中でやってること
- 1 環境を証明
- nvmとかnodeとかnpmとかがインストールされてないことを証明
- env.shは確認するコードが書かれているだけです
- 2 nvmとmongodbをググる
- 3 nvmをgitで取得
$ git clone git://github.com/creationix/nvm.git ~/.nvm
- 4 nvmを環境に読み込む
$ . ~/.nvm/nvm.sh
- 5 nvmでv0.4.8をインストール(最近のやつだとnpmも自動でインストール)
$ nvm install v0.4.8
- 6 その間にMongoDB(今回は64bit linux)をwgetでダウンロード
- 7 MongoDBを解凍
- 8 mongod用の各種ディレクトリ(db/log)を作成
- 9 mongodを起動
$ ./mongodb-linux-x86_64-1.8.1/bin/mongod --dbpath=/home/muddydixon/mongodb/db/ --logpath=/home/muddydixon/mongodb/log/mongod.log --fork
- 10 nvmのインストールがまだ終わってないので、先行してコードを書き始める
var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/sbm'); var Bookmark = new mongoose.Schema({title: String, url: String}); mongoose.model('Bookmark', Bookmark); Bookmark = mongoose.model('Bookmark'); app.post('/', function(req, res)[ if(req.body.url){ // 最悪でもurlぐらいはチェックする new Bookmark({title: req.body.title || req.body.url, url: req.body.url}).save(function(err){ res.redirect('/'); // 保存したら/ にリダイレクト }); } });
- 11 nvmが終わっているのでnpmでexpress, jade, mongooseをインストール(グローバルでインストールして、リンクを貼る)
$ npm install express jade mongoose -g $ npm link express jade mongoose
- 12 expressでsbmを作成
$ express sbm && cd sbm
- 13 app.jsを編集
- さっきの先行コードを適宜コピー
- app.getを変更
app.get('/', function(req, res){ Bookmark.find({}, function(err, bms){ res.render('index', { bms: bms, title: 'Express' }); }); });
- 14 view/index.jadeを編集
div ul - bms.forEach(function(bm){ li a(href= bm.url)= bm.title - }) form(action='/', method= 'POST') input(name= 'title') input(name= 'url') input(type= 'submit')
- 15 app.jsを起動
$ node.app
- 16 googleとniftyを登録して完了!(7:24)
あ、今回の実験ではニフティクラウドをお借りしました。モニターバンザイ!