设为首页 收藏本站
查看: 877|回复: 0

[经验分享] node.js + express(ejs) + mongodb(mongoose) 增删改实例

[复制链接]

尚未签到

发表于 2015-7-8 10:32:47 | 显示全部楼层 |阅读模式
MongoDB 安装步骤总结:
  1、解压目录到d盘 mongodb
  2、安装目录的下新建文件mongo.config文件
  



##store data here
dbpath=D:\mongodb\data
##all output go here
logpath=D:\mongodb\log\mongo.log
##log read and write operations
diaglog=3
3、d:\mongodb\bin>mongod --config D:\mongodb\mongo.config


4、d:\mongodb\bin> mongod --config D:\mongodb\mongo.config --install
net start MongoDB
net stop MongoDB
mongod --remove


1、创建node项目

  express -e demo

2、初始化相关组件

  


npm install

// 初始化ejs

npm install ejs

// 初始化express组件

npm install express

// 初始化mongdb组合的组件

npm install mongoose

npm install express-mongoose

// node 默认启动后修改文件,页面不会立即体现,通过该组件可以使修改的文件实时在页面体现出来

npm install supervisor
3、运行app.js,访问:http://localhost:3000,查看页面,如看到以下页面则说明页面访问成功:



DSC0000.png



4、此时项目默认使用*.ejs作为页面的模板,为了方便我们吧ejs的后缀修改html

a) 修改app.js中内容:

  var ejs = require('ejs'); //增加
  app.engine('html',ejs.__express); //增加
  //将app.set('view engine', 'ejs'); 修改为app.set('view engine', 'html');




DSC0001.png

b) 重命名views下的index.ejs为index.html


5、重新启动服务访问,如果页面可以正常显示则说明修改成功。



6、现在开始写增删改查的详细方法



1)修改路由(app.js)

  app.get('/add.html',routes.add); //跳转到添加页面
app.post('/add.html', routes.create);//添加记录
app.get('/del.html',routes.delById);//删除
app.get('/modify.html', routes.toModify); //跳转到修改页面
app.post('/modify.html', routes.modify);//修改数据

2)在routes目录下创建model.js文件,内容如下:

  var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var demoSchema = new Schema({
uid : String,
title:String,
content:String,
createTime : { type: Date, default: Date.now }
});
exports.Demo = mongoose.model('Demo',demoSchema); //此处Demo会自动对应数据库中的demos表,不知道是不是可以修改,反正我是这个认为的。

3)修改index.js,添加逻辑方法

  /*
* GET home page.
*/
var mongoose = require('mongoose');
var model = require('./model');
var Demo = model.Demo;
mongoose.connect('mongodb://localhost/monkey');

exports.index = function(req, res){
//查询所有数据,保存到demos中,在页面循环输出
Demo.find(function(err,docs){
res.render('index', {
title:'Express Demo Example',
demos:docs
});
});

};
//跳转到添加页面
exports.add = function(req, res) {
console.log('----here');
res.render('add.html', {title :'添加 demo list'});
};
//创建新纪录
exports.create = function(req, res){
var demo = new Demo({
uid : req.body.uid,
title: req.body.title,
content : req.body.content
});

console.log('create----');
demo.save(function(err,doc){
console.log(doc);
res.redirect('/');
});
};
// 根据id删除相应的记录
exports.delById = function(req, res) {

var id = req.query.id;
console.log('id = ' + id);

if(id && '' != id) {
console.log('----delete id = ' + id);
Demo.findByIdAndRemove(id, function(err, docs) {
console.log('delete-----'+ docs);
res.redirect('/');
});
}

};
// 查询对应修改记录,并跳转到修改页面
exports.toModify = function(req, res) {
var id = req.query.id;
console.log('id = ' + id);

if(id && '' != id) {
console.log('----delete id = ' + id);
Demo.findById(id, function(err, docs){
console.log('-------findById()------' + docs);

res.render('modify.html',{title:'修改ToDos',demo:docs});
});
};
};
//修改相应的值
exports.modify = function(req, res) {

var demo = {
uid : req.body.uid,
title: req.body.title,
content : req.body.content
};

var id = req.body.id; //因为是post提交,所以不用query获取id
if(id && '' != id) {
console.log('----update id = ' + id + "," + demo);
Demo.findByIdAndUpdate(id, demo,function(err, docs) {
console.log('update-----'+ docs);
res.redirect('/');
});
}
};

4)index.html页面

  

  
   
   

table { border:1px solid green;}
table thead tr th{ border:1px solid green;}
table tbody tr td{ border:1px solid green;}


  
  

增加


    DEMO List
   




id
uid
title
content
createTime
操作











Delete | Update




  


5)add.html页面

  

  
   
   



  
  

增加



uid :
title:
content:




  

  


6) 修改页面modify.html

  

  
   
   
  
  

修改


uid :
title:
content:





  











进补季节最养男人的6类食

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-84423-1-1.html 上篇帖子: Mongodb亿级数据量的性能测试 下篇帖子: MongoDB入门三步曲2--基本操作(续)--聚合、索引、游标及mapReduce
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表