热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

我的博客地址正式地址测试地址前端源码后端源码文章目录项目及其技术栈介绍前端:项目初始化前端:使用Sass和Antd前端:开发体验优化前端:搭建路由和状态管理前端:支持Axios前端

我的博客地址

正式地址

测试地址

前端源码

后端源码

文章目录

项目及其技术栈介绍

前端: 项目初始化

前端: 使用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了,下一步将会介绍部署相关的知识。



推荐阅读
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • 小编给大家分享一下TypeScript2.7有什么改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 枚举使用枚举我们可以定义一些带名字的常量。使用枚举可以清晰地表达意图或创建一组有区别的用例。TypeScript支持数字的和基于字符串的枚举。数字枚举首先我们看看数字枚举,如果你使 ... [详细]
  • 使用npmi编译vue项目出现无法下载github.com中的对应的包源文件报错信息如下:npmERR!fatal:unabletoaccess'https:github ... [详细]
  • 技术周报·2021-05-07-小编推荐向现代Javascript转型原文标题:Publish,ship,andinstallmodernJavaScriptforfaste ... [详细]
  • linux和jenkins的连接
    1.在浏览器中打开我们的jenkins页面。(http:ip:端口号jenkins)2.然后登陆管理员用户。3.配置节点信息1).点击【jenkins管理】【节点管理】【新建节 ... [详细]
  • JenkinsHudson是一套非常强大的自动化构建系统,其具有使用简单,对各种开发环境支持良好,正确地使用能解决研发过程管理中版本构建、发布的诸多问题。本文描述了笔者在使用过程中 ... [详细]
  • docker+k8s+git+jenkins
    docker+k8s+git+jenkins,Go语言社区,Golang程序员人脉社 ... [详细]
author-avatar
CC小乖2502924425_929
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有