Koa封装改变公共状态的方法

2020-11-26 14:54:42 浏览数 (1)

在后端开发中,应交互要求,经常会用到一些改变状态的方法,如收藏与取消收藏、点赞与取消点赞、上架与下架等等,今天给大家分享一个用Koa结合MongoDB封装的改变状态的方法,实现如下:

1.安装处理json数据格式的中间件

代码语言:javascript复制
npm install koa-jsonp --save

2.引入处理json数据格式的中间件

代码语言:javascript复制
const jsonp = require('koa-jsonp');

3.配置koa-jsonp中间件

代码语言:javascript复制
app.use(jsonp());

4.封装改变状态的路由

代码语言:javascript复制
router.get('/changeStatus', async (ctx) => {

    // 获取前台传过来数据(集合名、属性、id)
    let collectionName = ctx.query.collectionName;
    let attr = ctx.query.attr;
    let id = ctx.query.id;

    // 查询数据库
    let data = await DB.find(collectionName ,{ 
        "_id":DB.getObjectId(id)
    });

    if(data.length>0){
        // 如果状态status为1
        if(data[0][attr]==1){
            // 改为0
            var json={
                [attr]:'0'
            };
        // 如果状态status为0
        }else{
            // 改为1
            var json={
                [attr]:'1'
            }
        };
        // 更新数据库
        let updateResult = await DB.update(collectionName,{
            "_id":DB.getObjectId(id)
        },json);

        // 必须安装koa-jsonp,并use,才能返回json格式的数据
        if(updateResult){
            ctx.body={"message":'更新成功',"success":true}
        }else{
            ctx.body={"message":'更新失败',"success":false}
        };

    }else{
        
        ctx.body={"message":'更新失败,参数错误',"success":false}
    }
});

5.封装页面点击事件

代码语言:javascript复制
// 点击切换状态
function  toggle(el, collectionName, attr, id) {
    $.get('/admin/changeStatus',{
        // 集合名称
        collectionName:collectionName,
        // 属性
        attr:attr,
        // ID
        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'
            }
        }
    })
}

0 人点赞