mongoose网址:http://www.mongoosejs.net/
1.d盘新建mongo_data文件,用来存储数据,打开cmd,将数据库连接到mongo_data文件夹中
mongod --dbpath=D:\mongo_data
2.打开另一个cmd窗口,输入mongo
show dbs(显示数据库)
use students(创建数据库)
1)创建students文件夹,进入文件夹,安装所需的包
npm init -y
npm install express art-template express-art-template bootstrap body-parser --save
npm install mongoose
2)在文件夹中创建
app.js(node执行文件)
router.js(路由)
students.js(student数据库表文件)
views(文件夹,用来保存html文件)
public(文件夹,用来存储静态资源)
3)书写html文件
4)书写app.js文件,
let express = require('express');
let app =express();
//设置静态资源
app.use('/public/',express.static('./public/'))';
app.use('node_modules',express.static(''./node_modules'));
//配置bodyparser中间件,用来接收post请求的数据
let bodyParser =require('body-parser'); app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
//配置模板引擎
app.engine('html',require('express-art-template');
//配置路由
let router = require('./router.js');
app.use(router);//要在模板引擎和中间件之后
app.listen(3000,()=>{
console.log('server is running...')
})
5)可以使用nodemon app.js启动文件
let mongoose = require('mongoose');
//数据库连接
mongoose.connect('mongodb://127.0.0.1:27017/students');//mongodb://127.0.0.1:27017后面接的是数据库名称
//设置表结构
let StudentSchema = mongoose.Schema({
id:Number,//id
num:String,//学号
name:String,
sex:Number,
subject:String,//班级
age:Number,//年龄
grade:Number,//分数
})
//导出表结构
module.exports = mongoose.model('student',StudentSchema )
let express = require('express');
let router = express.Router();
//链接数据库
let Students = require('./students')
//显示首页
function findAll(res){
Students.find({},(err,doc)=>{
if(err){
return console.log('查找失败')
}
res.render('index.html',{students:doc})
})
}
router.get('/',(req,res)=>{
//查找
findAll(res)
})
//显示添加页面
router.get('/students/create',(req,res)=>{
res.render('create.html')
})
//显示编辑页面
router.get('/students/edit',(req,res)=>{
Students.findOne({id:Number(req.query.id)},(err,data)=>{
if(err){return console.log('查找失败')}
let {id,name,num,subject,sex,age,grade} = data;
res.render('edit.html',{id,name,num,subject,sex,age,grade})
})
})
//添加学生
router.post('/students/create',(req,res)=>{
Students.find({},(err,data)=>{
if(err){return console.log('查找失败')}
req.body =Object.assign(req.body,{id:data.length+1});
Students.create(req.body,(err)=>{
if(err){
return console.log('添加失败')
}
Students.find({},(err)=>{
if(!err){
res.redirect('/')
}
})
})
})
})
//删除学生
router.get('/students/del',(req,res)=>{
Students.deleteOne({id:Number(req.query.id)},(err)=>{
if(err){
return console.log('删除失败')
}
findAll(res)
})
})
//编辑学生
router.post('/students/edit',(req,res)=>{
let {id,name,num,subject,sex,age,grade} = req.body;
Students.findOneAndUpdate({id:Number(id)},{$set:{name,num,subject,sex,age,grade}},{useFindAndModify:true},(err)=>{
if(err){return console.log('更新失败')}
res.redirect('/')
})
})
module.exports = router;
github地址:https://github.com/hyx-tomandjerry/studentsBynode/tree/master