从零搭建项目 (10) --- 后端: 使用 TypeORM 和 MySQL

我的博客地址

正式地址

测试地址

前端源码

后端源码

文章目录

项目及其技术栈介绍

前端: 项目初始化

前端: 使用 Sass 和 Antd

前端: 开发体验优化

前端: 搭建路由和状态管理

前端: 支持 Axios

前端: 打包与环境变量设置

前端: 团队代码规范

后端: 项目初始化和使用 Koa 相关

后端: 使用 TypeORM 和 MySQL

部署: 使用 nginx 部署前端项目

部署: 后端部署

部署: 使用 jenkins 自动化部署

前言

本章将会通过一个登录注册的例子来介绍 MySQL 以及 TypeORM 的使用, 因为在不同系统下的 MySQL 下安装方式不同, 所以安装 MySQL 的部分会一笔带过.

安装 MySQL

安装使用 workbench, 并创建用户和数据库

安装并使用 TypeORM

编译出 node 可运行的 JS 文件

安装 MySQL

这一部分建议查看这篇文章, 如果是 win 或者 Mac 用户建议通过连接下载资源包安装. 如果你使用的 Ubuntu 系统, 我会在后续章节介绍如何安装, 或者自行谷歌也行.

安装使用 workbench, 并创建用户和数据库

安装完毕后, 我们可以通过在命令行输入 MySQL -uroot -p, 然后输入你的初始化密码 (安装的时候会有这个密码给你, 也会提示你修改密码, 这个密码就是 root 用户的密码), 进入到 MySQL 中:

image.PNG

在这里我们可以通过命令进行一系列的操作 (命令的结尾必须输入分号), 比如查看有哪些数据库:

image.PNG

又或者进入到某个数据库中查看里面有哪些表:

image.PNG

但是在这里进行操作十分不方便, 比如下面这个创建表的命令:

image.PNG

这时候我们就需要使用 workbench 这个图形化数据库设计建模工具了:

image.PNG

创建数据库用户

在使用 workbench 之前, 我们先要创建一个数据库用户, 一切操作都在这个用户的范围内进行, 因为我们一般不在 root 用户下进行操作, 另外 TypeORM 的自动建表功能也无法在 root 用户下进行.

首先在命令行登录 root 用户:

image.PNG

然后使用如下命令创建一个用户

CREATE USER '你的用户名'@'ip 地址, 本地的话填 localhost,% 则是允许任意主机登录' IDENTIFIED BY '密码';

image.PNG

接着我们设置该用户拥有的权限, 这里设置的是拥有全部数据库和表的所有操作权限:

GRANT ALL ON *.* TO 'oxc'@'%';

image.PNG

设置完权限后记得使用这个命令让他生效

flush privileges;

image.PNG

安装并配置 workbench

我们直接去官网下载页面下载然后安装即可, 安装完毕后我们打开它, Mac 版的界面长这样, win 系统的会有点不一样, 但是也大同小异:

image.PNG

然后我们点击那个 + 号:

image.PNG

在弹出的框框里面输入必要的连接信息:

image.PNG

记得点一下这个按钮输入密码:

image.PNG

之后测试连接, 成功后点 ok:

image.PNG

之后下面就会多出一个选项, 直接点击即可建立数据库连接:

image.PNG

image.PNG

创建一个数据库

MySQL 创建数据库的方式非常简单, 我们在 workbench 中输入

create database test

命令就创建了一个名为 test 的数据库, 使用 use test 后就能够使用这个数据库了:

image.PNG

在上面步骤都完成后, 我们进入下一步, 安装并使用 TypeORM.

安装并使用 TypeORM

什么是 TypeORM

typeorm 是一款 ORM(对象关系映射) 框架, 能够非常方便的与 TypeScript,JavaScript 一起使用, 并且能够根据自定的 entity/model 自动创建表, 与他类似的还有 sequelize.

安装

我们可以使用 NPM 来安装 typeorm, 另外还需要安装 typeorm 与 MySQL 之间进行连接的连接器 mysql2

NPM i -S typeorm mysql2

配置

在项目根目录新建 ormconfig.JS 文件, 用于写 typeorm 的配置, 内容包含所选数据库, 数据库账号密码等, 详细请看注释:

image.PNG

之后去到 src/index.ts 中, 从 typeorm 中引入并使用 createConnection 方法:

image.PNG

这样就算是配置好了, 但此时还不能直接使用, 需要创建 entity

创建 entity

按照之前 ormconfig.JS 中的配置, 我们去 src 目录下新建一个名为 entity 的文件夹:

image.PNG

在其下新建 user.ts 文件, 并新建 User 类作为 model, 里面的

PrimaryGeneratedColumn

是自增 id 的意思:

image.PNG

需要注意的是, 如果你有上面那样的报错, 请到 tsconfig.JSON 中把装饰器开关打开并关闭对于 null 的检测:

image.PNG

之后我们重新 NPM run dev, 去到 workbench 中就能够看到, 对应 user 这个 model 的表已经被建好了, 我们可以通过 select * from user 获取到里面的信息:

image.PNG

此时 user 表中还没有数据.

这时候我们的 TypeORM 就配置好了, 接下来将会通过编写一个简单的注册登录逻辑将前端, 后端, 数据库之间的数据传输串通起来, 并熟悉一些 TypeORM 的 API

注册登录功能

前端部分

首先我们去到 src/services/API.ts 中添加注册登录的 API:

image.PNG

然后在

containsers/views/PageA

组件中添加界面和逻辑代码:

code.PNG

image.PNG

该段代码在登陆成功后将会显示一个欢迎的字段.

后端部分

前端部分完成后, 我们去到后端 src/controller/test.ts 中添加注册和登录的接口方法:

image.PNG

在 TypeORM 中, 可以使用 save 保存一个实例数据入表, 可以通过 find,findOne 等方法查找数据, 具体需要自行谷歌他的文档.

然后在

src/routers/index.ts

中添加对应路由:

image.PNG

这样登录注册的接口就完成了.

测试结果

我们去到页面注册一个账号:

image.PNG

然后去 workbench 中查看是否存在这个数据:

image.PNG

当存在这个数据时, 就说明注册接口已经跑通了.

我们再来登陆一下:

image.PNG

有结果返回, 说明登录接口也跑通了, 这证明从前端 -> 后端 -> 数据库直接的数据传输是通畅无阻的了.

注意

以上的注册登录接口只是用作简单测试所用, 在一个正常的项目中, 密码入库之前是会进行加密的, 而校验的也是加密后的密码, 所以千万别把明文密码入库了.

编译出可运行的 JS 文件

通常在服务器中, 我们会使用 pm2 进行项目的启动, 但是 pm2 一般运行的 JS 文件, 而我们使用的是 ts 进行代码的编写, 所以需要将 ts 代码先编译成 JS 文件, 再使用 pm2 进行启动 (当然也可以直接配置 pm2 使用 ts-node 来运行项目, 但是需要先在服务器中安装 ts-node).

要将 ts 文件编译为 JS 文件, 我们首先需要去 tsconfig.JSON 中配置编译后文件的存放路径, 在本例中设定为根目录中的 dist 文件夹:

image.PNG

然后去到 package.JSON 中添加编译命令, 使用 tsc 命令即可进行编译:

image.PNG

运行该命令后得出:

image.PNG

之后 pm2 运行的就是 dist 文件夹中的 index.JS.

后记

完成该篇文章后, 我们的后端搭建也基本 ok 了, 下一步将会介绍部署相关的知识.

来源: http://www.jianshu.com/p/ee5ecc310e23

typeorm mysql_从零搭建项目 (10) --- 后端: 使用 TypeORM 和 MySQL相关推荐

  1. 你还在费力的从零搭建项目吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | 无知者云 链接 | https://www.cnblog ...

  2. 你还在从零搭建项目 ?

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 作者 | 无知者云 链接 | https://www.cnblogs.com/davenkin ...

  3. 使用vue+webpack从零搭建项目

    vue到现在已经成为一个热门的框架,在项目实践当中,如果想要创建一个新项目,通常都会使用vue-cli的脚手架工具,毋容置疑能够方便很多,很多东西也不需要自己亲自去配置.都知道,脚手架其实是vue结合 ...

  4. electron-vue-element从零搭建项目(一)

    版本信息 vue/cli 4.5.15 yarn 1.22.5 以下操作需要先安装vue/cli和yarn/npm Vue脚手架创建项目 vue create productname 本项目vue使用 ...

  5. electron-vue-element从零搭建项目(二)

    项目目录结构 src目录下创建main文件夹,renderer文件夹 将background.js放到main文件夹下,该文件夹为主进程相关代码 其余文件全部移入到renderer文件夹下,该文件夹为 ...

  6. 2023新春版:看这篇大宝典就够了!从零搭建React项目全家桶

    React是近年来前端开发领域非常热门的技术框架,其背景是Facebook团队的技术支持,在全球的前端开发市场上占有率很高.结合React丰富的社区资源,可以让项目开发如虎添翼.虽然React的学习门 ...

  7. react安装_超全面详细一条龙教程!从零搭建React项目全家桶(上篇)

    React是近几年来前端项目开发非常火的一个框架,其背景是Facebook团队的技术支持,市场占有率也很高.很多初学者纠结一开始是学react还是vue.个人觉得,有时间的话,最好两个都掌握一下.从学 ...

  8. springboot项目结构_从零搭建Spring Boot脚手架(1):开篇以及技术选型

    1. 前言 目前Spring Boot已经成为主流的Java Web开发框架,熟练掌握Spring Boot并能够根据业务来定制Spring Boot成为一个Java开发者的必备技巧,但是总是零零碎碎 ...

  9. 【从零搭建后端基础设施系列(九)】-- VM容器化

    ==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 旁白:今天老大拉小黑他们开会,就公司目前机器资源紧缺进行了讨论-- 老大:自从咱公司开始推行微服务化后, ...

最新文章

  1. zoj 1698 Easier Done Than Said?
  2. Java基础之集合归总
  3. 计算机在职英语,计算机在职研究生英语教学存在的不足
  4. css语法和JS语法的对比
  5. mysql 自动 分库 备份_MySQL分库备份的方法
  6. Eclipse 4.10.0 正式发布,全面拥抱 Java 11!
  7. python 可视化_Python可视化二维高斯分布
  8. kubernetes视频教程笔记 (18)-service
  9. LayaAir 位图添加遮罩与滤镜
  10. 读书印记 - 《批判性思维工具》
  11. 【VUE】vue安装教程
  12. 【Tools系列】Windows下一款好用的文件搜索工具:XSearch
  13. Mac os查看共享文件
  14. 微软 游戏服务器,微软正式公布游戏串流服务「Project xCloud」
  15. Css3实现背景毛玻璃效果
  16. Java8新特性-Optional类
  17. python爬虫下载网站磁力链接
  18. 天津理工大学c语言ex6,天津理工大学C#试验一
  19. int和String类型的转换
  20. 图像增强算法汇总(直方图均衡化、拉普拉斯、Log变换、gamma伽马变换)附MATLAB代码

热门文章

  1. python re 正则表达式
  2. Scrapy学习大全
  3. 特征工程——categorical特征 和 continuous特征
  4. 软件设计原则(四)依赖倒置原则 -Dependence Inversion Principle
  5. 详解联邦学习Federated Learning
  6. 机器学习实战:使用lightGBM预测饭店流量
  7. 最新RemObjects,您值得拥有
  8. 博客园添加一个分享的
  9. 40.Node.js Web 模块
  10. 【Lolttery】项目开发日志 (二) 数据库的二三事