时间:2021-07-01 10:21:17 帮助过:27人阅读
settings.js:
module.exports={ "dburl":"mongodb://localhost:27017/tab" }
下面是一个登录-注册-留言的例子:
var express=require("express"); var app=express(); var db=require("./model/mdb.js"); /*formidable必须类表单提交,直接ajax不行,如使用ajax提交表单*/ var formidable=require("formidable"); /*** mongodb可以直接创建库,只要库不存它就会创建,当存在时就使用当前的 集合也是,所以它很灵活,是一门可以使用js编写shell的数据库 它不看重字段的一致性,所以它可以随便储存 每个集合下的文档里的json对象里的对象里都有一个_id的,可以使用它做唯一标示符 因为它是一个对象,所以需要一些特殊方式转换它,如nodeJS里的require("mongodb").ObjectID 引入一个模块对象直接转换它 */ var ObjectID=require("mongodb").ObjectID; var session = require("express-session"); var md5 = require(‘./model/md5.js‘); //session默认设置 只有req有session设置和获取 app.use(session({ secret: ‘keyboard cat‘, resave: false, saveUninitialized: true })); //引用渲染页面引擎 app.set("view engine","ejs"); //静态文件位置 app.use(express.static("./public")); //入口 app.get("/",function(req,res,next){ if(!req.session.login){ res.redirect("/zhuce"); return ; } //查询数据的总量 db.getAllCount("liuyanban",function(count){ res.render("index",{ pageamount:Math.ceil(count/5), name:req.session.username }); }); }); //提交 app.post("/tijiao",function(req,res,next){ var form=new formidable.IncomingForm(); form.parse(req,function(err,fields){ db.insertOne("liuyanban",{ "name":fields.name, "des":fields.des, "time":new Date() },function(err,result){ if(err){ res.send(false); return ; } res.send(true); }); }); }); //查询 app.get("/read",function(req,res,next){ var pageNum=parseInt(req.query.pageNum); db.find("liuyanban",{},{ pageamount:5, page:pageNum, sort:{time:-1} },function(err,result){ var obj={status:false}; if(err){ res.send(obj); return ; } obj["status"]=true; obj["content"]=result; res.send(obj); }); }); //删除 app.get("/shanchu",function(req,res,next){ var id=ObjectID(req.query.id); db.deleteMany("liuyanban",{_id:id},function(err,result){ if(err){ res.send("删除失败"); return ; } res.redirect("/"); }); }); //注册 app.post("/zhuce",function(req,res,next){ var form=new formidable.IncomingForm(); form.parse(req,function(err,fields){ db.insertOne("user",{ "name":fields.name, "pwd":md5(fields.pwd) },function(err,result){ if(err){ res.send(false); return ; } res.send(true); }); }); }); //注册 app.get("/zhuce",function(req,res,next){ res.render("zhuce"); }); //登录 app.post("/denglu",function(req,res,next){ var form=new formidable.IncomingForm(); form.parse(req,function(err,fields){ var pwd=md5(fields.pwd); db.find("user",{ name:fields.name },function(err,result){ var obj={}; if(err){ res.send(obj); return ; } if(result.length==0){ obj={status:false,err:"账号错误"}; res.send(obj); return ; } if(pwd!=result[0].pwd){ obj={status:false,err:"密码错误"}; res.send(obj); return ; } req.session.login = true; req.session.username = result[0].name; obj["status"]=true; obj["content"]=result; res.send(obj); }); }); }); //登录 app.get("/denglu",function(req,res,next){ res.render("denglu"); }); app.listen(3000);
没有给目录结构。因为结构是默认设置那种。
MD5:
var crypto = require(‘crypto‘); function md5(str){ var md5Method=crypto.createHash("md5"); var pwd=md5Method.update(str.toString()).digest("base64"); return pwd; } function dealMd5(str){ return md5(md5(str).substr(2,5)+md5(str)+md5(str).substr(4,7)); } module.exports=dealMd5;
每次使用mongodb都要开启数据库。
普通开启
mongod --dbpath c:\mongo
选择引擎开启,因为mongodb3后出现两个引擎,而新引擎有些mongodb客户端不兼容
mongod --storageEngine mmapv1 --dbpath c:\mongo
node之mongodb的DAO
标签:ring engine 结构 密码 enum name pre amount cal