MongoDB
概要
MongoDB用の接続に関する説明
インストール
package.jsonを編集
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app"
},
"dependencies": {
"express": "3.1.0",
"jade": "*",
"mongodb": ">= 0.9.0"
}
}
「npm install」でインストールを実行
D:\Tools\Works\nodejs_test\webexpress01>npm install
npm WARN package.json application-name@0.0.1 No README.md file found!
npm http GET https://registry.npmjs.org/mongodb
npm http 200 https://registry.npmjs.org/mongodb
npm http GET https://registry.npmjs.org/mongodb/-/mongodb-1.2.14.tgz
npm http 200 https://registry.npmjs.org/mongodb/-/mongodb-1.2.14.tgz
npm http GET https://registry.npmjs.org/bson/0.1.8
npm http 200 https://registry.npmjs.org/bson/0.1.8
npm http GET https://registry.npmjs.org/bson/-/bson-0.1.8.tgz
npm http 200 https://registry.npmjs.org/bson/-/bson-0.1.8.tgz
> bson@0.1.8 install D:\Tools\Works\nodejs_test\webexpress01\node_modules\mongodb\node_modules\bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)
D:\Tools\Works\nodejs_test\webexpress01\node_modules\mongodb\node_modules\bson>node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
mongodb@1.2.14 node_modules\mongodb
└── bson@0.1.8
D:\Tools\Works\nodejs_test\webexpress01>
mongodbサーバのデータを用意、確認
> use testdb01
switched to db testdb01
>
> db.sample.find()
{ "_id" : ObjectId("51656cdc05d8cc0fb2136d90"), "aaa" : "111" }
{ "_id" : ObjectId("516571711a63b8674ff2f9b7"), "aaa" : "222" }
>
サンプルソース
app.js
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, mongo = require('./routes/mongo') // 追加
, http = require('http')
, path = require('path');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
// ルーティングメソッド設定
app.get('/', routes.index);
app.get('/users', user.list);
app.get('/mongo', mongo.showMongo); // 追加
app.post('/mongo', mongo.saveMongo); // 追加
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
routes/mongo.js
/*
* データベース
*/
var mongo = require('mongodb');
var client = new mongo.Db('testdb01', new mongo.Server('localhost', 10000));
client.open(function (err, client){
if(err){
console.log(err);
}else{
console.log('connected to mongodb');
}
});
// 表示用
exports.showMongo = function(req, res){
client.collection('sample',
function(err, collection){
if(err){
throw err;
}
collection.find().toArray(
function(err, results){
if(err){
throw err;
}
res.render('mongo', {
title: 'aaaa',
list: results
});
}
);
}
);
};
// 追加用
exports.saveMongo = function(req, res){
// パラメータ取得
var name = req.param('name');
client.collection('sample',
function(err, collection){
if(err){
throw err;
}
// 保存
collection.save({aaa: name},
function(err, results){
if(err){
throw err;
}
// リダイレクト
res.redirect("/mongo");
}
);
}
);
};
views/mongo.jade
doctype 5
html
head
meta(charset="utf-8")
title= title
body
div
h1 Mongo DB
h2 データ追加
form(action="./mongo", method="post")
input(type="text", name="name")
input(type="submit", value="追加")
ul
each item in list
li=item.aaa
結果
画面表示して既存のデータを確認
データを入力して追加
表示画面に表示されていること
クライアントより確認して、追加されていること
> db.sample.find()
{ "_id" : ObjectId("51656cdc05d8cc0fb2136d90"), "aaa" : "111" }
{ "_id" : ObjectId("516571711a63b8674ff2f9b7"), "aaa" : "222" }
{ "aaa" : "333333", "_id" : ObjectId("516575141f4ca65020000002") }
>
最終更新:2013年04月10日 23:22