Egg.js使用MySql数据库

最近在接手一个项目,vue+nuxt+egg,我也是刚开始学习egg.js,所以会将自己踩的坑都记录下来。

安装mysql

使用sequelize连接数据库,首先安装egg-sequelize和mysql2。

npm install --save egg-sequelize mysql2

打开package.json文件,查看安装是否成功和对应的版本。

{"name": "enmo-admin-server","version": "1.0.0","description": "","private": true,"egg": {"declarations": true},"dependencies": {"await-stream-ready": "^1.0.1","egg": "^2.15.1","egg-scripts": "^2.11.0","egg-sequelize": "^5.2.1","egg-swagger-doc": "^2.2.9","egg-validate": "^2.0.2","egg-view-assets": "^1.6.1","egg-view-ejs": "^2.0.1","lodash": "^4.17.11","moment": "^2.24.0","ms": "^2.1.1","mysql2": "^2.1.0","sha1": "^1.1.1"},"devDependencies": {"autod": "^3.0.1","autod-egg": "^1.1.0","egg-bin": "^4.11.0","egg-ci": "^1.11.0","egg-mock": "^3.21.0","eslint": "^5.13.0","eslint-config-egg": "^7.1.0","sequelize-cli": "^6.1.0"},"engines": {"node": ">=10.0.0"},"scripts": {"start": "egg-scripts start --daemon --title=egg-server-enmo-admin-server","stop": "egg-scripts stop --title=egg-server-enmo-admin-server","dev": "egg-bin dev","debug": "egg-bin debug","test": "npm run lint -- --fix && npm run test-local","test-local": "egg-bin test","cov": "egg-bin cov","lint": "eslint .","ci": "npm run lint && npm run cov","autod": "autod"},"ci": {"version": "10"},"repository": {"type": "git","url": ""},"author": "","license": "MIT"
}

在config/plugin.js中启用eggsequelize插件

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

在config/config.default.js中添加sequelize配置

// config/config.default.js
config.sequelize = {dialect: 'mysql',host: '127.0.0.1',port: 3306,database: 'egg-sequelize-doc-default',username: 'root',password: 'w123456',
}

在数据库中创建表并插入数据

image.png

在app/model/user.js中编写代码实现业务逻辑

// app/model/user.js
'use strict';module.exports = app => {const {STRING,INTEGER,} = app.Sequelize;const User = app.model.define('user', {id: {type: INTEGER,primaryKey: true,autoIncrement: true,},name: STRING(50),sex: STRING(4),pass: STRING(32),}, {freezeTableName: true,timestamps: false,});return User;
};

这个Model就可以在Controller和Service中通过app.model.User访问,编写Controller调用这个Model

// app/controller/user.js
'use strict';const Controller = require('egg').Controller;class UserController extends Controller {async index() {const _ctx = this.ctx;const user = await _ctx.model.User.findAll();_ctx.body = user;}
}module.exports = UserController;

将controller挂载到路由上

// app/router.js
module.exports = app => {const { router, controller } = app;router.resources('users', '/users', controller.users);
};

使用npm run dev命令启动项目。在localhost:7001/user看到数据库中的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/151961.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(a /b)*c的值

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

JavaWeb——关于servlet种mapping地址映射的一些问题

6、Servlet 6.4、Mapping问题 一个Servlet可以指定一个映射路径 <servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern> </servlet-mapping>一个Servlet可以指定多个映射路径 <servlet-mapping>&…

DevOps持续集成-Jenkins(2)

文章目录 DevOpsDevOps概述Integrate工具&#xff08;centos7-jenkins主机&#xff09;Integrate概述Jenkins介绍CI/CD介绍Linux下安装最新版本的Jenkins⭐Jenkins入门配置安装必备插件⭐安装插件&#xff08;方式一&#xff1a;可能有时会下载失败&#xff09;安装插件&#x…

SpringCloudGateway 入门

目录 POM 依赖一、内容网关的作用Spring-Cloud-Gateway的核心概念 二、基于Ribbon的负载均衡三、核心概念详细3.1 断言 Predicate3.2 过滤器3.2.1 内置过滤器3.2.2 自定义过滤器构造器&#xff08;原理&#xff09;资源结构Route / Predicate 的构造器构造器的增强器整体协同关…

软考系列(系统架构师)- 2009年系统架构师软考案例分析考点

试题一 软件架构设计 【问题1】&#xff08;9分&#xff09; 软件质量属性是影响软件架构设计的重要因素。请用200字以内的文字列举六种不同的软件质量属性名称并解释其含义。 常见的软件质量属性有多种&#xff0c;例如性能&#xff08;Performance)、可用性&#xff08;Ava…

VirtualBox 安装 麒麟Linux

为了验证Oracle EM是否可以管理麒麟OS和其上的Oracle数据库&#xff0c;今天试着在VirtualBox上装了麒麟Linux&#xff0c;也就是银河麒麟。整个过程比较顺畅。 选定ISO文件后&#xff0c;操作系统自动识别为Red Hat。勾选“跳过自动安装”&#xff1a; 内存和CPU选的默认值&…

蓝桥杯 Java 括号序列

本算法需要把问题分解成三步&#xff1a; 第一步&#xff1a;算出 ((() 填充 ( 的方案 第二步&#xff1a;算出 ((() 填充 ) 的方案 第三步&#xff1a;把两个方案相乘 第二步可以把原方案当成将 ((() 逆转成 ())) 再填充 ( &#xff0c;这样就可以重复第一步用的算法 第一步…

笔记:电子设备接地,接的到底是什么地?

电路中有“地”&#xff0c;设备中有“地”&#xff1b;都是“地”&#xff0c;此地非彼地。 混淆的原因 有些混淆&#xff0c;是以为中文翻译造成的&#xff0c;英文所有Ground都统一翻译为“地”&#xff1b; 例1&#xff1a;英文Circuit Ground&#xff0c;应该翻译为电路…

深入理解Java IO流: 包括字节流和字符流的用法、文件读写实践

文章目录 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。&#x1f30e;跑过十五…

ruoyi-nbcio版本从RuoYi-Flowable-Plus迁移过程记录

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 从KonBAI / RuoYi-Flowable-Plus 项目移植过来&#xff0c;开始用yarn install之后yarn run dev 还是有问…

Redis 持久化配置,RDB和AOF方式配置说明

文章目录 一、概述二、RDB 持久化方式配置三、AOF 持久化方式配置 如果您对Redis的了解不够深入请关注本栏目&#xff0c;本栏目包括Redis安装&#xff0c;Redis配置文件说明&#xff0c;Redis命令和数据类型说明。 一、概述 Redis 持久化是指将 Redis 数据存储到磁盘上&#x…

maven之父子工程版本控制案例实战,及拓展groupId和artifactId的含义

<parent>标签 用于父子工程项目&#xff0c;什么是父子工程&#xff1f; 顾名思义&#xff0c;maven父子项目是一个有一个父项目&#xff0c;父项目下面又有很多子项目的maven工程&#xff0c;当然&#xff0c;子项目下面还可以添加子项目&#xff0c;从而形成一个树形…