egg.js学习记录

1.创建egg项目并启动后端服务器

javascript 复制代码
pnpm create egg    //创建项目
//选择simple就行
pnpm i    //下载插件
pnpm run dev    //运行项目

2.安装跨域依赖和数据库依赖

javascript 复制代码
pnpm i egg-cors    //跨域依赖
pnpm i egg-mysql    //数据库依赖
pnpm i egg-scripts  //部署

3.修改配置文件 plugin.js

javascript 复制代码
module.exports = {
  // had enabled by egg
  // static: {
  //   enable: true,
  // }
  mysql:{
    enable:true,
    package:'egg-mysql'
  },
  cors:{
    enable:true,
    package:'egg-cors'
  }
};

4.配置config.default.js

javascript 复制代码
module.exports = appInfo => {
  /**
   * built-in config
   * @type {Egg.EggAppConfig}
   **/
  const config = exports = {};

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1709895338474_7197';

  // add your middleware config here
  config.middleware = [];

  // add your user config here
  const userConfig = {
    // myAppName: 'egg',
  };

  //关闭CSRF验证  跨域请求  不进行同源验证
  config.security = {
    csrf:{
      enable:false
    }
  }

  config.cors = {
    origin: '*',
    allowMethods: 'GET,POST,PUT,DELETE' //设置允许访问的请求方式
  }

  //配置数据库连接
  config.mysql = {
    app:true,
    client:{
      host:'localhost', //数据库地址
      port:'3306', //数据库端口号
      user:'root',   //数据库用户名
      password:'123456', //数据库密码
      database:'mitest',  //要连接的数据库
    }

  }

  return {
    ...config,
    ...userConfig,
  };
};

5.配置service层

javascript 复制代码
const  Service  = require("egg").Service;

class CustomerService extends Service {
    //4.登录(根据客户手机号码和密码进行查询)
    async selectCustomerByTelIdByPass(customer) {
        let result;
        try {
            //调用数据库实现查询
            let sql = `select * from customer where telId=${customer.telId} and password=${customer.password}`;  
            result = await this.app.mysql.query(sql);
        } catch (error) {
            console.log(error)
        }
        return result;
    }
}

module.exports = CustomerService;

6.配置controller层

javascript 复制代码
const { Controller } = require("egg");

class CustomerController extends Controller {
    //1.全查询所有的商品分类信息
    async selectCustomerByTelIdByPass() {
        const { ctx } = this; //对应的application实例  全局
        //调用service层方法得到结果  返回给前台
        const result = await this.ctx.service.customer.selectCustomerByTelIdByPass(this.ctx.request.body);
        ctx.body = result
    }
}

module.exports = CustomerController

7.配置路由层

javascript 复制代码
 router.post('/selectUserByUserByPass' , controller.userinfo.selectUserByUserByPass)
相关推荐
无巧不成书021837 分钟前
Windows PowerShell执行策略详解:从npm报错到完美解决
前端·windows·npm·powershell执行策略·执行策略·npm.ps1·脚本报错
Z兽兽7 小时前
React@18+Vite项目配置env文件
前端·react.js·前端框架
SuniaWang7 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
A_nanda8 小时前
根据AI提示排查vue前端项目
前端·javascript·vue.js
happymaker06268 小时前
web前端学习日记——DAY05(定位、浮动、视频音频播放)
前端·学习·音视频
~无忧花开~8 小时前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架
LegendNoTitle9 小时前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php
@大迁世界9 小时前
1.什么是 ReactJS?
前端·javascript·react.js·前端框架·ecmascript
BJ-Giser10 小时前
Cesium 基于EZ-Tree的植被效果
前端·可视化·cesium
王码码203511 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos