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

[经验分享] MongoDB增删改查例子

[复制链接]

尚未签到

发表于 2015-7-8 05:28:18 | 显示全部楼层 |阅读模式
var
express    = require('express'),
app         = express.createServer(),
hogan = require('express-hogan.js'),
mongoose = require('mongoose'),
Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/aaaaa');
/*
require()是node.js提供的函数,可以让你引入其他模块以调用模块的函数和变量,默认下node.js会在$NODE_PATH和目前js所在目录下的node_modules文件夹下去寻找模块。require也可以用来载入自己写的模块哦~这样涉及到node.js的模块机制,后面有机会就在介绍。
第二行的express.createServer()就是在建立server,而中间的module.exports也是涉及到node.js的模块机制,以后再说。
*/
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'html');
/*
上面两行是设置views文件夹,即模板文件夹,__dirname是node.js里面的全局变量,即取得执行的js所在的路径,
另外__filename是目前执行的js文件名。所以,app.set(‘views’, __dirname + ‘/views’);是设置views的文件夹。
而app.set('view engine', 'jade');是设置express.js所使用的render engine。除了Jade之外,
express.js还支持EJS(embedded javascript)、Haml、CoffeScript和jQuery template等js模板。
*/
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
/*
express.bodyParser()是Connect內建的middleware,设置此处可以将client提交过来的post请求放入request.body中。
express.methodOverride()也是Connect內建的,可以协助处理POST请求伪装PUT、DELETE和其他HTTP methods。
app.router()是route requests,但express.js的官方文件是这句可有可无,并且经过测试还真的是这样,不过还是写上吧。
express.static()也是一个Connect內建的middleware来处理静态的requests,例如css、js、img文件等。所以static()里面指定的文件夹中的文件会直接作为静态资源吐出来。
*/
app.register('.html', hogan);//注册模板
app.set('view options', {
layout: false
});
});
app.configure('production', function(){
//console.log('in configure with production');
var oneYear = 31557600000;
app.use(express.static(__dirname + '/static', { maxAge: oneYear }));
app.use(express.errorHandler());
});
app.configure('development', function(){
//console.log('in configure with development');
app.use(express.static(__dirname + '/static'));
//console.log(__dirname + '/static');
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.get('/', function(req, res) {
res.render('index.html',{locals:{a:"页面标题被模板替换了"}});
});
/*
当访问默认域名时跳转到index.html试图,注意后面后面参数的格式
*/
app.get('/user/:id?', function(req, res, next){
var id = req.params.id;
if (id) {
Member.find({UserName:id},function(err,docs){
if(docs.length==0)
{
console.log("No Data!");
}else
{
res.send(docs[0].UserName+""+docs[0].Password);
}
})
} else {
next(); // 将控制转向下一个符合URL的路由
}
});

app.get('/user', function(req, res){
Member.find(function(err,docs){
if(docs.length!=0)
{
var msg=[];
docs.forEach(function(m)
{
msg.push(""+m.UserName+"|"+m.Password+"|Eidt|Del|Add");
});
res.send(msg.join(""));
}
else
{
res.send("No Data!");
}
})
});
app.get('/edit/:id', function(req, res){
var id = req.params.id;
Member.findOne({UserName:id},function(err,item){
if(err)
{
res.send("HasError");
}else
{
res.render('edit.html',{locals:{UserName:item.UserName,Password:item.Password}});
}
})
});
app.post('/edit/:id', function(req, res){
var id = req.params.id;
var username=req.body.username;
var password=req.body.password;
Member.findOne({UserName:id},function(err,item){
if(err)
{
res.send("HasError");
}else
{
Member.update({UserName:id},{UserName:username,Password:password},function(err,num){
console.log(num);
});
res.redirect("/user");
}
})
});
app.get('/del/:id', function(req, res){
var id = req.params.id;
Member.findOne({UserName:id},function(err,item){
if(err)
{
res.send("HasError");
}else
{
item.remove();
res.send("HasDel");
}
})
});
/*
页面的路由处理,上例中当我们访问/user/12时返回“user 12”, csser注:app.get相当于在服务器注册了一个监听get请求事件的侦听器,
当请求的URL满足第一个参数时,执行后面的回调函数,该过程是异步的。
路由是一个可以被内部编译成正则表达式的简单字符串,比如当/user/:id被编译后,被内部编译后的正则表达式字符串看起来会是下面的样子(简化后):
\/user\/([^\/]+)\/?,这里的'\'是转义用的
*/
app.post('/', function(req, res){
console.log(req.body.username);
console.log(req.body.password);
try{
var member=new Member({ UserName:req.body.username,Password:req.body.password})
member.save();
res.redirect("/user");
}
catch(except)
{
throw except;
}
});
var MemberSchema =new Schema({
UserName: String,
Password: String
})
var Member = mongoose.model('Member', MemberSchema);
function StudentBuyBook(res)
{
throw new Error;
res.send("asdasd");
}
app.get('/500', function(req, res){
throw new Error('keyboard cat!');
});
app.get('/Error1',function(req,res){
res.send("Error Be Cacth")
});
app.listen(3000);
console.log(
"Express server listening on port %d in %s mode",
app.address().port,
app.settings.env);

  

运维网声明 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.iyunv.com/thread-84177-1-1.html 上篇帖子: (5) MongoDB查询操作 下篇帖子: Install MongoDB on CentOS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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