NodeJS Mongo Programming
Connection
var mongoose = require("mongoose"); var Schema = mongoose.Schema; var model = mongoose.model(modelname, Schema); mongoose.connect('mongodb://localhost/mydata'); // host/databasename
To run this
Schema is Mongoose unique object
CRUD
Add routes for GET and POST
All operation codes are in index.js
Create
Add Route(app.js)
app.get('/', routes.index); app.post('/', routes.index_post);
index.jade(FORM)
This is form page.
Submit to post method to root(/)
extends layout block content h1= title p Welcome to #{title} p#msg #{msg} form(action='/',method='post') input(type='text',name='name') br input(type='text',name='mail') br input(type='text', name='memo') br input(type='submit', value='send') hr table(border='1') tr th Name th Mail th memo each data in datas tr td= data.name td= data.mail td= data.memo
index.js(GET,POST)
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var mydataSchema = new Schema({ 'name' : String, 'mail' : String, 'memo' : String }); var MyData = mongoose.model('mydata', mydataSchema); // mydatas?, small letter var db = mongoose.connect('mongodb://localhost/mydb'); exports.index = function(req, res){ MyData.find(function(err, docs) { if (err) { console.log(err); } console.log(docs); res.render('index', { title: 'Express', msg : 'List', datas : docs }); }); }; exports.index_post = function(req, res) { var name = req.body.name; var mail = req.body.mail; var memo = req.body.memo; var data = new MyData({ 'name' : name, 'mail' : mail, 'memo' : memo }); data.save(function(err){ if (err) { console.log(err); } res.redirect('/'); }); };
UPDATE
app.js
app.get('/edit/:id', routes.edit); app.post('/update', routes.update);
edit.jade
extends layout block content h1= title p Welcome to #{title} p#msg #{msg} form(method='post',action='/update') input(type='hidden',name='id',value='#{data._id}') table tr td Name td input(type='text', name='name', value='#{data.name}') tr td Mail td input(type='text', name='mail', value='#{data.mail}') tr td Memo td input(type='text', name='memo', value='#{data.memo}') tr td td input(type='submit', value='Submit')
index.js(GET, POST)
/* * Edit, Update */ exports.edit = function(req, res) { var id = req.params.id; MyData.findOne({ '_id' : id }, function(err, doc){ if (err) { console.log(err); } res.render('edit',{ title : 'Express', msg : 'Update data', data : doc }); }); }; exports.update = function(req, res) { var id = req.body.id; var name = req.body.name; var mail = req.body.mail; var memo = req.body.memo; MyData.findOne({ '_id' : id }, function(err, doc) { if (err) { console.log(err); } doc.name = name; doc.mail = mail; doc.memo = memo; doc.save(function(err) { if (err) { console.log(err); } res.redirect('/'); // Go to top }); }); };
Delete
Routing /delete, /remove
app.js
app.get('/delete/:id', routes.del); app.post('/remove', routes.remove);
delete.jade
This shows data and delete button
extends layout block content h1= title p Welcome to #{title} p#msg #{msg} p= 'name:' + data.name form(method='post',action='/remove') input(type='hidden', name='id', value='#{data._id}') input(type='submit', value='Delete')
index.js
exports.edit = function(req, res) { var id = req.params.id; MyData.findOne({ '_id' : id }, function(err, doc){ if (err) { console.log(err); } res.render('edit',{ title : 'Express', msg : 'Update data', data : doc }); }); }; exports.update = function(req, res) { var id = req.body.id; var name = req.body.name; var mail = req.body.mail; var memo = req.body.memo; MyData.findOne({ '_id' : id }, function(err, doc) { if (err) { console.log(err); } doc.name = name; doc.mail = mail; doc.memo = memo; doc.save(function(err) { if (err) { console.log(err); } res.redirect('/'); }); }); };
Link to delete
a(href="/delete/#{data._id}")= 'Delete'