记eggjs对mysql数据库的crud操作

1,973 阅读3分钟

一、前言

因为最近一直在用node写后端,也踩了一些坑,有一些心得想记录和分享,如果有什么问题还请评论指出。
项目地址:github.com/hackftz/egg…

二、使用eggjs新建node项目

使用eggjs搭建node服务其实要比自己搭建要好很多的,但是还是会有一些问题,在具体细节中我会说明。
首先按照官方文档来创建项目:

mkdir egg-mysql cd egg-mysql
npm init egg --type=ts
npm i
npm dev

此时项目已经启动,先可以不管,接口回头再来写。

三、安装mysql

MySQL Community Server下载地址
进入页面,会自动识别系统,然后推荐。

我的是macos,下载好.dmg文件直接安装,就可以在系统设置最底下看到了。

点击打开mysql, 如果后期连接数据库连不上,要点击这里重新舒适化一下。

这里弄好之后,重新start mysql server,自己做测试不是一直在用的话,记得取消勾选开机自动启动mysql server。

四、创建数据库

使用root密码登录

mysql -u root -p

连接好之后,就可以进入mysql命令行了。

之后可以使用mysql的命令创建dabase,查看databases,以及切换数据库等等,这里具体不多赘述,百度都有。

五、使用datagrip来管理数据库

大多数公司都还是在使用navicat来管理数据库,我看过网上许多区别和对比,最终选择了datagrip,datagrip是jetbrains下的专门用来管理数据库的应用,使用起来很方便,提示信息比较友好,使用下来我觉得不错,推荐大家使用。

用datagrip连接好本地mysql之后,就可以先建个users表,如下图:

六、接口部分

接口部分采用restful规范:

crudrestful apirouter
createpost/api/add
retrieveget/api/query
updateput/api/put/:id
deletedelete/api/delete/:id

这里egg内置了egg-mysql,我开始使用npm包的mysql来写的接口,会比较复杂,这里推荐大家使用egg-mysql,已经封装好了对mysql数据库的各种操作,并且做好了connection,可以提升很多开发效率。

  • 参数校验,此项目因为是test,没有加egg-validate,真实项目是要加的。
  • 查询users:先根据条件来排查,要将筛选条件和分页条件区分开,用不同的options来进行检索。
  • 添加user:要做好主键id自增的操作:这里要对数据表设置主键绑定唯一id,然后设置自动增加
  • 删除user:先判断id对应的那条数据是否存在,存在即使用mysql命令删除,不存在则也要给client提示信息,删除项不存在。
  • 修改user:也是一样,先判断id对应数据是否存在,看参数是否正确,再决定是否应该修改。

七、其他

想要测试的,用代码根目录下文件直接导入到对应软件就可以了:
crud.postman_collection.json => postman导出的接口配置
eggdatabase_users.csv => datagrip导出的数据库配置

八、扩展

需要了解数据库相关的东西,推荐阅读以下几篇文章。
数据库索引的原理到底是什么?
常用的数据库的字段类型及大小
Node.js解决后端mysql插入数据后,获得自增长型id值的问题
mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey