eggjs 实现增删改查

在这里插入图片描述

目录

  1. egg.js 配合 jwt 进行鉴权
  2. egg.js 配置 mysql 以及简单登录实现
  3. eggjs+mysql实现图片上传
  4. eggjs 实现增删改查
  5. eggjs 搭配 vue+axios 实现登录和获取用户信息

开发

本章节是在于如何实现一个增删改查

前置工作

新建 app -> utils -> utils.js , 该方法是为了处理返回结果

function responseFormat(status, data) {
  if (status) {
    return {
      code: 200,
      msg: '请求成功',
      data,
      success: true,
    };
  }
  return {
    code: 500,
    msg: data,
    success: false,
  };
}
function responseHandleFormat(status) {
  if (status) {
    return {
      code: 200,
      msg: '操作成功',
      success: true,
    };
  }
  return {
    code: 500,
    msg: '操作失败',
    success: false,
  };
}
module.exports = {
  responseFormat,
  responseHandleFormat,
};

正式开始
数据库建表,表名为 type , 表结构为

在这里插入图片描述
添加 sevice -> type.js

'use strict';

const Service = require('egg').Service;

class TypeService extends Service {
  //查询一条
  async getTypeInfo(params) {
    const { app } = this;
    try {
      const result = await app.mysql.get('type', params);
      return result;
    } catch (error) {
      return null;
    }
  }
  // 查询多条
  async query(params) {
    const { app } = this;
    const { whereObj, limit, offset } = params;
    try {
      const list = await app.mysql.select('type', {
        where: whereObj,
        limit,
        offset,
      });
      // 
      const total = await app.mysql.count('type', whereObj);
      return { list, total };
    } catch (error) {
      console.log(error);
      return null;
    }
  }
  // 新增
  async add(params) {
    const { app } = this;
    try {
      const result = await app.mysql.insert('type', params);
      return result;
    } catch (error) {
      console.log(error);
      return null;
    }
  }
  // 修改
  async update(params) {
    const { app } = this;
    try {
      const result = await app.mysql.update('type', params, {
        where: {
          id: params.id,
        },
      });
      return result;
    } catch (error) {
      console.log(error);
      return null;
    }
  }
  // 删除
  async delete(id) {
    const { app } = this;
    try {
      const result = await app.mysql.update('type', { deleteFlag: 0 }, {
        where: {
          id,
        },
      });
      return result;
    } catch (error) {
      console.log(error);
      return null;
    }
  }
}
module.exports = TypeService;

添加 controller -> type.js

'use strict';
const Controller = require('egg').Controller;
const { responseFormat, responseHandleFormat } = require('../utils/utils');
class TypeController extends Controller {
  //分页查询
  async query() {
    const { ctx } = this;
    const { page = 1, ...filter } = ctx.query;
    const limit = parseInt(ctx.query.limit) || 10;
    // 假删除
    const whereObj = { deleteFlag: 1 };
    for (const x in filter) {
      switch (x) {
        case 'id':
          whereObj.id = filter[x];
          break;
        case 'name':
          whereObj.name = filter[x];
          break;
        default:
          break;
      }
    }
    const { total, list } = await ctx.service.type.query({
      whereObj,
      limit: limit ? limit : null, //limit
      offset: page ? (page - 1) * limit : null,
    });
    ctx.body = responseFormat(true, {
      limit, //limit
      page, //当前页
      total, // 总条数
      pages: Math.ceil(total / limit), //总页数
      list, //数据
    });
  }
  async saveType() {
    const { ctx } = this;
    const { name, id } = ctx.request.body;
    let result = null;
    if (id) {
      result = await ctx.service.type.update({ name, id });
    } else {
      result = await ctx.service.type.add({ name });
    }
    if (result) {
      ctx.body = responseHandleFormat(true);
    } else {
      responseHandleFormat(false);
    }
  }
  async deleteType() {
    const { ctx } = this;
    const { id } = ctx.request.body;
    const result = await ctx.service.type.delete(id);
    if (result) {
      ctx.body = responseHandleFormat(true);
    } else {
      responseHandleFormat(false);
    }
  }
}
module.exports = TypeController;

添加路由

 router.get('/api/type/list', _jwt, controller.type.query); // 获取类型
 router.post('/api/type/save', _jwt, controller.type.saveType); // 新增修改类型 
 router.post('/api/type/delete', _jwt, controller.type.deleteType); // 删除类型

测试结果

分页查询
在这里插入图片描述
新增修改,判断为id,没有id就是新增,有id就是修改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除,这里采用假删除,当 deleteFlag 为 0 的时候为删除
在这里插入图片描述

在这里插入图片描述
这里有两个字段,暂时还用不到,一个是 user_id , 为创建者的 id,一个为 type 为预留字段,不用的话可以自行删除

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Egg.js 和 MySQL 的增删改查语句,你可以借助 Egg.js 提供的框架特性和 MySQL 的 npm 包来完成。以下是一些示例代码: 1. 安装依赖: ``` $ npm install egg-mysql --save ``` 2. 配置插件: 在 `config/plugin.js` 中添加以下配置: ``` exports.mysql = { enable: true, package: 'egg-mysql' }; ``` 3. 配置数据库连接: 在 `config/config.default.js` 中添加以下配置(根据你自己的实际情况修改): ``` exports.mysql = { client: { host: 'localhost', port: '3306', user: 'root', password: 'your_password', database: 'your_database' } }; ``` 4. 使用增删改查语句: 在 Controller 或 Service 中使用以下示例代码来执行相应的 SQL 操作。 注意:这里只是示例,你需要根据具体的业务逻辑进行修改。 - 查询数据: ```javascript const res = await app.mysql.get('table_name', { id: 1 }); // 获取 id 为 1 的数据 const res = await app.mysql.select('table_name', { where: { status: 1 }, orders: [[ 'create_time', 'desc' ]], limit: 10 }); // 获取 status 为 1 的前 10 条数据,按照创建时间降序排列 ``` - 插入数据: ```javascript const res = await app.mysql.insert('table_name', { name: 'example' }); // 插入一条数据,name 字段为 'example' ``` - 更新数据: ```javascript const res = await app.mysql.update('table_name', { name: 'new_example' }, { where: { id: 1 } }); // 更新 id 为 1 的数据,将 name 字段更新为 'new_example' ``` - 删除数据: ```javascript const res = await app.mysql.delete('table_name', { id: 1 }); // 删除 id 为 1 的数据 ``` 这只是一些基本的示例,你可以根据需要使用更复杂的查询条件和操作。具体的语法和用法可以参考 Egg.js 和 MySQL 的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值