效果modelapp/model/nav.jsmodule.exports = app => { const mongoose = app.mongoose; const Schema = mongoose.Schema; var d=new Date(); const NavSchema = new Schema({ title: { type: String }, link: { type: String }, position: { type:Number, default:2 //1最顶部 2中间 3底部 }, is_opennew:{ type:Number, default:1 //1、本窗口 2、新窗口 }, sort:{ type:Number, default:100 }, relation:{ // 1,2,3 type:String, default:’’ }, status: { type: Number,default:1 }, add_time: { type:Number, default: d.getTime() } }); return mongoose.model(‘Nav’, NavSchema,’nav’);}router.js router.get(’/admin/nav’, controller.admin.nav.index); router.get(’/admin/nav/add’, controller.admin.nav.add); router.get(’/admin/nav/edit’, controller.admin.nav.edit); router.post(’/admin/nav/doEdit’, controller.admin.nav.doEdit); router.post(’/admin/nav/doAdd’, controller.admin.nav.doAdd);controllerapp/controller/admin/nav.js’use strict’;var BaseController =require(’./base.js’);class NavController extends BaseController { async index() { var page=this.ctx.request.query.page || 1; var pageSize=5; //获取当前数据表的总数量 var totalNum=await this.ctx.model.Nav.find({}).count(); //分页查询 var result=await this.ctx.model.Nav.find({}).skip((page-1)*pageSize).limit(pageSize); await this.ctx.render(‘admin/nav/index’,{ list:result, totalPages:Math.ceil(totalNum/pageSize), page:page }); } async add() { await this.ctx.render(‘admin/nav/add’); } async doAdd() { // console.log(); var nav=new this.ctx.model.Nav(this.ctx.request.body) await nav.save(); //注意 await this.success(’/admin/nav’,‘增加导航成功’); } async edit() { var id=this.ctx.query.id; var result=await this.ctx.model.Nav.find({"_id":id}); await this.ctx.render(‘admin/nav/edit’,{ list:result[0] }); } async doEdit() { var _id=this.ctx.request.body._id; await this.ctx.model.Nav.updateOne({"_id":_id},this.ctx.request.body) await this.success(’/admin/nav’,‘编辑导航成功’); } }module.exports = NavController;view查找app/view/admin/nav/index.html<%- include ../public/page_header.html %> <!– 引入分页插件 –> <script src="/public/admin/js/jqPaginator.js"></script> <div class=“panel panel-default”> <div class=“panel-heading clear”> <span>网站导航</span> <a href="/admin/nav/add" class=“btn btn-primary fr”>增加导航</a> </div> <div class=“panel-body”> <!– 列表展示 –> <div class=“table-responsive”> <table class=“table table-bordered”> <thead> <tr class=“th”> <th>分类名称</th> <th>关联商品</th> <th>跳转地址</th> <th>位置</th> <th class=“text-center”>排序</th> <th class=“text-center”>状态</th> <th class=“text-center”>操作</th> </tr> </thead> <tbody> <%for(var i=0;i<list.length;i++){%> <tr> <td><%=list[i].title%></td> <td><%=list[i].relation%></td> <td><%=list[i].link%></td> <td> <%if(list[i].position==1){%> 顶部 <%}else if(list[i].position==2){%> 中间 <%}else{%> 底部 <%}%> </td> <td class=“text-center”><span onclick=“app.editNum(this,‘Nav’,‘sort’,’<%=list[i]._id%>’)"><%=list[i].sort%></span></td> <td class=“text-center”> <%if(list[i].status==1){%> <img src="/public/admin/images/yes.gif” onclick=“app.changeStatus(this,‘Nav’,‘status’,’<%=list[i]._id%>’)” /> <%}else{%> <img src="/public/admin/images/no.gif" onclick=“app.changeStatus(this,‘Nav’,‘status’,’<%=list[i]._id%>’)” /> <%}%> </td> <td class=“text-center”> <a href="/admin/nav/edit?id=<%=list[i]._id%>">修改</a> <a class=“delete” href="/admin/delete?model=Nav&id=<%=list[i]._id%>">删除</a></td> </tr> <%}%> </tbody> </table> <div id=“page” class=“pagination fr”></div> </div> </div> </div> <script> $(’#page’).jqPaginator({ totalPages: <%=totalPages%>, visiblePages: 8, currentPage: <%=page%>, onPageChange: function (num, type) { console.log(‘当前第’ + num + ‘页’,type); if(type==‘change’){ location.href="/admin/nav?page="+num; } } }); </script></body></html>增加app/view/admin/nav/add.html<%- include ../public/page_header.html %> <div class=“panel panel-default”> <div class=“panel-heading”> 增加导航 </div> <div class=“panel-body”> <div class=“table-responsive input-form”> <form action="/admin/nav/doAdd" method=“post” > <ul class=“form_input”> <input type=“hidden” name="_csrf" value="<%=csrf%>"> <li> <span>导航名称:</span> <input type=“text” name=“title”/></li> <li> <span>导航位置: </span> <select name=“positon” id=“positon”> <option value=“1”>顶部</option> <option value=“2” selected>中间</option> <option value=“3”>底部</option> </select> </li> <li> <span>关联商品:</span> <input type=“text” name=“relation”/></li> <li> <span>导航连接地址:</span> <input type=“text” name=“link”/></li> <li> <span>新窗口打开: </span> <select name=“is_opennew” id=“is_opennew”> <option value=“1”>否</option> <option value=“2”>是</option> </select> <li> <span>排序:</span> <input type=“text” name=“sort” value=“10”/></li> <li> <span>状态: </span> <input type=“radio” name=“status” checked value=“1” id=“a”/> <label for=“a”>显示</label> <input type=“radio” name=“status” value=“0” id=“b”/><label for=“b”>隐藏</label>  </li> <li> <br/> <button type=“submit” class=“btn btn-primary”>提交</button> </li> </ul> </form> </div> </div> </div></body></html>编辑app/view/admin/nav/edit.html<%- include ../public/page_header.html %> <div class=“panel panel-default”> <div class=“panel-heading”> 修改导航 </div> <div class=“panel-body”> <div class=“table-responsive input-form”> <form action="/admin/nav/doEdit" method=“post” > <ul class=“form_input”> <input type=“hidden” name="_csrf" value="<%=csrf%>"> <input type=“hidden” name="_id" value="<%=list._id%>"/> <li> <span>导航名称:</span> <input type=“text” name=“title” value="<%=list.title%>"/></li> <li> <span>导航位置: </span> <select name=“position” id=“position”> <option value=“1” <%if(list.position==1){%>selected<%}%>>顶部</option> <option value=“2” <%if(list.position==2){%>selected<%}%>>中间</option> <option value=“3” <%if(list.position==3){%>selected<%}%>>底部</option> </select> </li> <li> <span>关联商品:</span> <input type=“text” name=“relation” value="<%=list.relation%>"/></li> <li> <span>导航连接地址:</span> <input type=“text” name=“link” value="<%=list.link%>"/></li> <li> <span>新窗口打开: </span> <select name=“is_opennew” id=“is_opennew”> <option value=“2” <%if(list.is_opennew==1){%>selected<%}%>>否</option> <option value=“1” <%if(list.is_opennew==2){%>selected<%}%>>是</option> </select> <li> <span>排序:</span> <input type=“text” name=“sort” value=“10” value="<%=list.sort%>"/></li> <li> <span>状  态:</span> <input type=“radio” name=“status” <%if(list.status==1){%> checked <%}%> value=“1” id=“a”/> <label for=“a”>显示</label> <input type=“radio” <%if(list.status==0){%> checked <%}%> name=“status” value=“0” id=“b”/><label for=“b”>隐藏</label>  </li> <li> <br/> <button type=“submit” class=“btn btn-primary”>提交</button> </li> </ul> </form> </div> </div> </div></body></html>