zl程序教程

您现在的位置是:首页 >  其他

当前栏目

eggjs 怎么实现账单详情页的删除接口?

2023-03-14 22:36:58 时间

原型


我们可以打开「掘掘记账本」在线预览 http://cost.chennick.wang/detail?id=1548

测试账号:admin,测试密码:111111。


如下:里面需要详情接口,编辑接口,删除接口。


6dbba5b5411141c9a94dfa04c0835096.png



删除接口实现


1、控制层编写 delete 方法

// 删除账单
async delete () {
  const { ctx, app } = this;
  try {
    // 1、获取参数
    const { id = "" } = ctx.request.body;
    // 2、判空处理
    if (!id) {
      ctx.body = {
        status: 400,
        desc: '详情id不能为空',
        data: null
      }
      return;
    }
    console.log('1、获取查询参数id',id);
    // 3、拿到 token 获取用户信息 user_id
    const token = ctx.request.header.authorization;
    const decode = await app.jwt.verify(token, app.config.jwt.secret);
    if (!decode) return;
    let user_id = decode.id;
    console.log('2、拿到 token 获取用户信息 user_id',user_id);
    // 4、通过 user_id id 删除账单数据
    const deleteData = await ctx.service.bill.delete(user_id, id);
    console.log('3、通过 user_id id 删除账单数据', deleteData);
    ctx.body = {
      status: 200,
      desc: '删除成功',
      data: null
    }
  } catch(error) {
    console.log(error);
    ctx.body = {
      status: 500,
      desc: '系统异常',
      data: null
    }
  }
}


2、服务层编写 delete 方法

// 删除账单
async delete(user_id, id) {
  const { app } = this;
  try {
    const result = await app.mysql.delete('bill', {
      id,
      user_id,
    });
    return result;
  } catch (error) {
    console.log(error);
    return null;
  }
}


3、路由配置

// 删除账单
router.post('/api/bill/delete', verify_token, controller.bill.delete);




测试

我们输入参数,不要忘记头部 token。


1d73d86a8d414356a4059826c3abd786.png


执行之后成功,刷新数据库发现数据删除成功。


cef80eee89904e87afef7b6900bb8489.png


如果参数 id 不传,就会报错


7dac6fb4e32a4d10b7c5ff6f8c05d7c4.png