管理系統需求分析:
注冊登錄頁面:有的管理平台需要注冊,有的直接分配權限就能進入。
內頁功能👇:
增加
查詢分類
關鍵字查詢
分頁查詢
刪除
修改
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') })