关于用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的理解更进一步加深了,希望通过以后的学习会让自己变得越来越好。


好的,我可以为您提供一些关于用Node.js编写学生成绩管理系统的基本指导。 首先,您需要安装Node.js和npm包管理器。然后,您可以使用以下步骤来搭建学生成绩管理系统: 1. 创建一个新的Node.js项目并初始化npm: ``` mkdir 学生成绩管理系统 cd 学生成绩管理系统 npm init ``` 2. 安装所需的依赖项: ``` npm install express body-parser mongoose --save ``` 3. 在项目根目录下创建一个名为`app.js`的文件,作为应用程序的主要入口点。 4. 在`app.js`文件中,引入所需的模块,并配置Express应用程序: ```javascript const express = require('express'); const bodyParser = require('body-parser'); const mongoose = require('mongoose'); const app = express(); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); ``` 5. 连接到MongoDB数据库: ```javascript mongoose.connect('mongodb://localhost/学生成绩管理系统', { useNewUrlParser: true, useUnifiedTopology: true }).then(() => { console.log('Connected to MongoDB'); }).catch((err) => { console.log('Failed to connect to MongoDB', err); }); ``` 6. 创建数据模型: ```javascript const studentSchema = new mongoose.Schema({ name: String, score: Number }); const Student = mongoose.model('Student', studentSchema); ``` 7. 创建路由处理程序: ```javascript app.get('/students', (req, res) => { Student.find({}, (err, students) => { if (err) { res.status(500).send(err); } else { res.send(students); } }); }); app.post('/students', (req, res) => { const student = new Student({ name: req.body.name, score: req.body.score }); student.save((err, student) => { if (err) { res.status(500).send(err); } else { res.send(student); } }); }); ``` 8. 启动应用程序并监听端口: ```javascript const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`Listening on port ${port}`); }); ``` 以上是一个简单的Node.js学生成绩管理系统的基本架构和实现步骤,您可以根据自己的需求进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值