您的位置:首页 > 数据库 > Mongodb

开始一个Koa+mongodb项目(四)实现用户管理

2020-07-12 16:49 405 查看

2020.04 .01


上一章实现好了登录
这篇开始实现我们后台管理的基本功能。

一、实现退出登录

1、在admin.js路由里
定义一个全局对象,自定义变量。

ctx.state.x={ userinfo:ctx.session.userinfo };

2、在对应的header中修改动态绑定
在header模板中显示用户信息
{{x.userinfo.username}}

3、在login.js
配置loginOut退出登录功能

router.get('/loginOut', async (ctx)=>{
ctx.session.userinfo=null; ctx.redirect(ctx.state.__HOST__+'/admin/login') });

二、配置用户管理路由

在view页面的列表配置一下动态选中
这里是看教程,我还是略懂的,所以就不打具体理解了,怕误导大家。
这里的x.url就是上面定义好的全局对象x

<li class="
{{if x.url[1]=='manager'}} active open {{/if}}">
<a href="#" class="dropdown-toggle"> <i class="icon-user-md"></i> <span class="menu-text"> 用户管理 </span>
<b class="arrow icon-angle-down"></b> </a> <ul class="submenu" > <li class="{{if !G.url[2]}} active {{/if}}">
<a href="{{__ROOT__}}/admin/manager" > <i class="icon-double-angle-right"></i> 用户列表 </a> </li>

三、增加管理员

自定义日期管道

封装 Ajax 改变状态

简介:更新用户表
在login.js改变用户状态。
1、先在数据库admin表添加一个time时间表,类型为date,记录管理员最后登录时间。

2、安装模块

npm i silly-datetime –save

引入模块

var sd = require('silly-datetime');
  1. 调用方法格式化时间
//配置 koa-art-template 模板引擎
render(app, { root: path.join(__dirname, 'views'), extname: '.html', debug: process.env.NODE_ENV !== 'production', dateFormat:dateFormat=function(value){
return sd.format(new Date(value),
'YYYY-MM-DD HH:mm');} });

4、参考官方文档
https://www.baidu.com/link?url=xUcT6Id1E02gysEQXGpDXPIfe6MBLGH-RAGvFWGtgHhMNKp8y9JHhnbJBgZVZlB7IAXWGDT5uU-xb-5quqS_Vq&wd=&eqid=8b631c4b001522c0000000065eac643e

配置koa-jsonp

1、安装

npm install --save jsonp

2、引入

var jsonp = require(;koa-jsonp')

3、配置jsonp的中间件
app.use(jsonp());

4、
官方文档:
https://www.baidu.com/link?url=OXMghI3e2snGZUfQOK7jKxDZ_erWYaAbtnPk5tsJqBbELaD3JVg1BrE0Xcuida1Y&wd=&eqid=fe574eb000164415000000065eac65d2

API
jsonp(url, opts, fn)
url (String) url to fetch
opts (Object), optional
param (String) name of the query string parameter to specify the callback (defaults to callback)
timeout (Number) how long after a timeout error is emitted. 0 to disable (defaults to 60000)
prefix (String) prefix for the global callback functions that handle jsonp responses (defaults to __jp)
name (String) name of the global callback functions that handle jsonp responses (defaults to prefix + incremented counter)
fn callback

5、请求接口
根据上方官方文档的api,修改
这里的图片是√和x,表示状态。

var app={
toggle:function(el,db,attr,id){
//console.log(el,action,id);
$.get('/admin/changeStatus',{db:db,attr:attr,id:id},function(data){
if(data.success){
if(el.src.indexOf('yes')!=-1){
el.src='/admin/images/no.gif';
}else{
el.src='/admin/images/yes.gif';
}}
})
}

6、更新数据库语句
新增basic.js

router.get('/change',async(ctx)=>{
var db=ctx.query.db;
var attr=ctx.query.attr;
var id=ctx.query.id; //更新的 id
var data= await DB.find(db,{"_id":DB.getObjectId(id)});
if(data.length>0){
if(data[0][attr]==1){
var json = {
[attr]: 0
};
}else{
var json = {
[attr]: 1
};
}
let updateResult=await DB.update(db,{"_id":DB.getObjectId(id)},json);
//console.log(updateResult);
if(updateResult){
ctx.body={"message":'更新成功',"success":true};
}else{
ctx.body={"message":"更新失败","success":false}
}
}
})

测试效果:

下一章:
开始一个Koa+mongodb项目(五)列表渲染4.07
开始一个Koa+mongodb项目(六)删除功能

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐