前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Koa封装改变公共状态的方法

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

作者头像
越陌度阡
发布2020-11-26 14:54:42
5390
发布2020-11-26 14:54:42
举报

在后端开发中,应交互要求,经常会用到一些改变状态的方法,如收藏与取消收藏、点赞与取消点赞、上架与下架等等,今天给大家分享一个用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'
            }
        }
    })
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档