关于用nodejs编写管理系统

最近学习了node.js,使用node.js写了一个超市管理系统的项目,接下来我对项目中用到的一些技术总结一下。


我的项目主要运用bootstrap + express进行搭建,后台运用MongoDB数据库,实现了基本的增、删、改、查、分页等功能。Bootstrap是简洁、直观、强悍的前端开发框架,让web开发更迅速、简单,我的项目页面较多,采用bootstrap框架,大大减少了工作量,而Express 是一个非常流行的node.js的web框架。基于connect(node中间件框架)。提供了很多便于处理http请求等web开发相关的扩展。在我的项目中,页面的路由,数据的前后端交互,都采用express框架,让自己的项目结构变得十分清晰,并且数据处理的难度也大大降低。


在做项目的过程中,遇到了好几处困难,比如,登录后数据的存储以及展示,密码的修改等等,但是给我印象最深的就是在数据查询的分页中数据显示的问题,数据太多的话,就要进行分页,但是页面跳转时会刷新已有的查询,经过我的努力,想到了一个方法,代码如下:

router.get('/search',(req,res)=>{

//console.log(req.query)

res.send(req.url.split('?')[1]);

})

在search页面中获取到路径,取到?后面的具体的值,传到查询列表页,就解决了上述问题。

router.get('/billSearch',(req,res)=>{

//数据总条数

var count = 0;

//每页展示的数量

var size = 5;

//总页数

var page = 0;

//页码

var pageNum = req.query.pageNum;

console.log(req.url)

mongodb.connect(db_str,(err,database)=>{

database.collection('bill',(err,coll)=>{

console.log(req.query.billId)

async.series([

function(callback){ coll.find({billId:req.query.billId}).toArray((err,data)=>{ //对页码总页数,信息的判断

//赋值

count = data.length;

page = Math.ceil(count/size);


pageNum = pageNum<1?1:pageNum;

pageNum = pageNum>page?page:pageNum;

callback(null,'')


})

},

function(callback){


coll.find({billId:req.query.billId}).sort({_id:-1}).limit(size).skip((pageNum-1)*size).toArray((err,data)=>{

callback(null,data)

})

}],

function(err,data){ //data值的是上面异步处理的函数返回的结果集

['',data]

res.render('billSearch',{list:data[1],page:page,count:count,pageNum:pageNum,size:size,name: req.session.name,lujing:req.url.replace(/\&pageNum.*/,"")});


database.close();

})


})

})

})

在以上代码中,虽然解决了查询的分页问题,但会出现点击下一页url中pageNum累加而不是消失的情况,针对这种情况,我对路径进行了处理,如上面代码中紫色的部分。


通过这个项目,让我对node.js的理解更进一步加深了,希望通过以后的学习会让自己变得越来越好。


你可能感兴趣的:(关于用nodejs编写管理系统)