node egg.js入门(增删改查)

2021年3月16日 12点热度 0条评论 来源: 授社

1.创建egg项目脚手架

npm init egg --type=simple
npm i
npm run dev

2.项目目录介绍
egg
├── package.json
├── app.js (可选)
├── agent.js (可选)
├── app
| ├── router.js
│ ├── controller(控制器)
│ | └── home.js
│ ├── service (可选)
│ | └── user.js
│ ├── middleware (可选)
│ | └── response_time.js
│ ├── schedule (可选)
│ | └── my_task.js
│ ├── public (可选)
│ | └── reset.css
│ ├── view (可选)
│ | └── home.tpl
│ └── extend (可选)
│ ├── helper.js (可选)
│ ├── request.js (可选)
│ ├── response.js (可选)
│ ├── context.js (可选)
│ ├── application.js (可选)
│ └── agent.js (可选)
├── config
| ├── plugin.js
| ├── config.default.js
│ ├── config.prod.js
| ├── config.test.js (可选)
| ├── config.local.js (可选)
| └── config.unittest.js (可选)
└── test
├── middleware
| └── response_time.test.js
└── controller
└── home.test.js
如上,由框架约定的目录:

app/router.js 用于配置 URL 路由规则,具体参见 Router。
app/controller/** 用于解析用户的输入,处理后返回相应的结果,具体参见 Controller。
app/service/** 用于编写业务逻辑层,可选,建议使用,具体参见 Service。
app/middleware/** 用于编写中间件,可选,具体参见 Middleware。
app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static。
app/extend/** 用于框架的扩展,可选,具体参见框架扩展。
config/config.{env}.js 用于编写配置文件,具体参见配置。
config/plugin.js 用于配置需要加载的插件,具体参见插件。
test/** 用于单元测试,具体参见单元测试。
app.js 和 agent.js 用于自定义启动时的初始化工作,可选,具体参见启动自定义。关于agent.js的作用参见Agent机制。
由内置插件约定的目录:

app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static。
app/schedule/** 用于定时任务,可选,具体参见定时任务。
若需自定义自己的目录规范,参见 Loader API

app/view/** 用于放置模板文件,可选,由模板插件约定,具体参见模板渲染。
app/model/** 用于放置领域模型,可选,由领域类相关插件约定,如 egg-sequelize。

3.输入一个helloworld
在app>controller 目录下建立你的第一个控制器 index.js

'use strict';

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

class index extends Controller { 
  async index() { 
    ctx.body ='hello,world';
  }
}
module.exports =index;

在app>router.js中配置上

'use strict';

/** * @param {Egg.Application} app - egg application */
module.exports = app => { 
  const {  router, controller} = app;
  router.get('/', controller.index.index);
};

npm run dev 启动项目 浏览器 localhost:7001 即可访问

4.连接数据库

安装egg-mysql

npm i --save egg-mysql 

在config>plugin.js 开启插件

// config/plugin.js
exports.mysql = { 
  enable: true,
  package: 'egg-mysql',
};

在config>config.default.js 中配置sql

// config/config.${env}.js
/* eslint valid-jsdoc: "off" */

'use strict';

/** * @param {Egg.EggAppInfo} appInfo app info */
module.exports = appInfo => { 
  /** * built-in config * @type {Egg.EggAppConfig} **/
  const config = exports = { };
  config.mysql = { 
    client: { 
      // host
      host: 'localhost',
      // 端口号
      port: '3306',
      // 用户名
      user: 'root',
      // 密码
      password: 'root',
      // 数据库名
      database: 'node_blog',
    },
    // 是否加载到 app 上,默认开启
    app: true,
    // 是否加载到 agent 上,默认关闭
    agent: false,
  };
  // add your user config here
  const userConfig = { 
    // myAppName: 'egg',
  };
  return { 
    ...config,
    ...userConfig,
  };
};

在控制器中使用数据库(增删改查)

回到刚刚创建的index.js(app>controller>index.js) 中

// app/controller/index.js
'use strict';
const Controller = require('egg').Controller;

class index extends Controller { 
  async index() { 
    // 假如 我们拿到用户 id 从数据库获取用户详细信息
    const user = await this.app.mysql.get('users', {  id: 11 });
    //查询全部
    const whole = await this.app.mysql.select('users');
    // 插入
	const insert = await this.app.mysql.insert('users', { name: '小名' }); // 在 post 表中,插入 name为 小名的记录
	// 修改数据,将会根据主键 ID 查找,并更新
	const row = { id:10,name:'法外狂徒张三'};
	const result = await this.app.mysql.update('users',{ ...row}); // 更新 users 表中的记录
	//删除users表中 name为 '法外狂徒张三' 的数据库记录
	const Delete = await this.app.mysql.delete('users', { 
	  name:'法外狂徒张三',
	});  
	//你也可以直接使用sql语法
	const postId = 1;
	const wholesql = await this.app.mysql.query('SELECT * FROM `users`');
    
    ctx.body =user;
  }
}
module.exports =index;

egg官网地址:https://eggjs.org/zh-cn/basics/structure.html

有任何疑问请在下方评论

后续…

登录 token验证  中间件的使用
阿里云 oss
上传图片
邮箱登录
等.....
    原文作者:授社
    原文地址: https://blog.csdn.net/weixin_44028979/article/details/114868344
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。