管理系統需求分析:
注冊登錄頁面:有的管理平台需要注冊,有的直接分配權限就能進入。
內頁功能👇:

增加
查詢分類
關鍵字查詢
分頁查詢
刪除
修改
H-ui:架起設計與后端的橋梁,輕量級前端框架
回憶: 開啟靜態目錄,靜態資源路徑


db/model/foodModel.js
const mongoose=require('mongoose')
var foodSchema = new mongoose.Schema({
name : {type:String,required:true},
price : {type:String,required:true},
desc : {type:String,required:true},
typename:{type:String,required:true},
typeid:{type:Number,required:true},
img:{type:String,required:true}
});
// 將schema 對象轉化為數據模型
var Food = mongoose.model('foods', foodSchema);//該數據對象和集合關聯('集合名',schema對象)
module.exports=Food
// a*10000+b*10000 4
router/foodRouter.js
const express=require('express')
const router= express.Router()
const foodModel=require('../db/model/foodModel')
/** * @api {post} /food/add 添加菜品 * @apiName addfood * @apiGroup Food * * @apiParam {String} name 菜品名稱. * @apiParam {String} price 價格. * @apiParam {String} desc 描述. * @apiParam {String} typename 類型. * @apiParam {String} typeid 類型ID. * @apiParam {String} img 圖片. * @apiSuccess {String} firstname Firstname of the User. * @apiSuccess {String} lastname Lastname of the User. */ router.post('/add',(req,res)=>{ // let data={ // name : '火山飄雪', // price : '9999', // desc : '超好吃', // typename:'涼菜', // typeid:1, // img:'/public/image/img3.jpg' // } let {name, price,desc,typename,typeid,img} = req.body // 判斷參數是否正確 foodModel.insertMany({name, price,desc,typename,typeid,img}) .then((data)=>{ res.send({err:0,msg:'添加成功'}) }) .catch(()=>{ res.send({err:-1,msg:'添加失敗'}) }) })
/** * @api {post} /food/getInfoByType 分類查詢 * @apiName getInfoByType * @apiGroup Food * * @apiParam {Number} typeid 用戶名. * @apiSuccess {String} firstname Firstname of the User. * @apiSuccess {String} lastname Lastname of the User. */ router.post('/getInfoByType',(req,res)=>{ let {typeid}=req.body foodModel.find({typeid}) .then((data)=>{ res.send({err:0,msg:'查詢ok',list:data}) }) .catch(()=>{ res.send({err:-1,msg:'查詢失敗'}) }) })
/** * @api {post} /food/getInfoByKw 關鍵字查詢 * @apiName getInfoByKw * @apiGroup Food * * @apiParam {Number} kw 關鍵字. * @apiSuccess {String} firstname Firstname of the User. * @apiSuccess {String} lastname Lastname of the User. */ router.post('/getInfoByKw',(req,res)=>{ // $set $gte $or $and $regex regexp 帶$都是內置的 let {kw}=req.body let reg=new RegExp(kw) // 創建一個正則表達式 匹配關鍵字 // foodModel.find({age:{$gte:16}}) // foodModel.find({name:{$regex:reg}}) 名字模糊 console.log(kw) foodModel.find({$or:[{name:{$regex:reg}},{desc:{$regex:reg}}]}) // 名字 以及描述 .then((data)=>{ res.send({err:0,msg:'查詢ok',list:data}) }) .catch(()=>{ res.send({err:-1,msg:'查詢失敗'}) }) })
router.post('/del',(req,res)=>{
let {_id}=req.body
//單個刪除 多個刪除(id傳數組)
foodModel.remove({_id:id})
.then((data)=>{
res.send({err:0,msg:'del ok'})
})
.catch(()=>{
res.send({err:-1,msg:'刪除失敗'})
})
})
router.post('/update',(req,res)=>{
//修改,編輯
let {name, price,desc,typename,typeid,img,_id} = req.body
console.log(req.body)
console.log({name, price,desc,typename,typeid,img,_id} )
foodModel.updateOne({_id},{name, price,desc,typename,typeid,img})
.then((data)=>{
res.send({err:0,msg:'修改 ok'})
})
.catch(()=>{
res.send({err:-1,msg:'修改失敗'})
})
})
/** * @api {post} /food/getInfoByPage 分頁查詢 * @apiName getInfoByPage * @apiGroup Food * * @apiParam {Number} pageSize 每頁數據條數. * @apiParam {Number} page 那一頁. * @apiSuccess {String} firstname Firstname of the User. * @apiSuccess {String} lastname Lastname of the User. */ router.post('/getInfoByPage',(req,res)=>{ let pageSize=req.body.pageSize || 2 //設置默認值 let page =req.body.page || 1 foodModel.find().limit(Number(pageSize)).skip(Number((page-1)*pageSize)) .then((data)=>{ res.send({err:0,msg:'查詢ok',list:data}) }) .catch(()=>{ res.send({err:-1,msg:'查詢失敗'}) }) })
module.exports=router
server.js
const express=require('express')
const db=require('./db/connect')
const path=require('path')
const app=express()
const Mail=require('./utils/mail')
console.log(Mail)
const bodypaser=require('body-parser')
app.use(bodypaser.urlencoded({ extended: false }))
app.use(bodypaser.json())
app.use('/public',express.static(path.join(__dirname,'./hehe')))
// 路由
const userRouter = require('./router/userRouter')
const fooodRouter= require('./router/foodRouter')
app.use('/user',userRouter)
app.use('/food',fooodRouter)
app.listen(3000,()=>{
console.log('server start')
})
