前言
后端服务搭建好后,下一步就要处理数据了,我对数据库不太了解,就选用最常见的mysql了。以登录为例,实现最简单的创建用户功能。
安装数据库
安装mysql
安装教程很多,这里不再赘述,参考 MySQL安装(Mac版)
安装成功后启动
安装可视化工具
由于在cmd中直接写sql增删改查实在麻烦,需要安装可视化工具方便操作,这里使用 sequel pro。
由于 mysql 是 8 版本+,需要安装指定版本的 sequel pro,参考:
sequel pro 无法链接mysql8.0以上高版本
安装成功后打开
输入相关参数后点击连接
连接成功后可以选择数据库 or 创建新的数据库
进入到数据库后点击左下方加号即可创建表
ORM
ORM 概念参考:
ORM实例教程
简单来说,就是可以使用面向对象编程的方式来操作关系型数据库,暂且不用去学习mysql语法。
这里选择 Sqeuelize。Sqeuelize 是一个基于 promise 的 Node.js ORM,支持多种数据库。
安装步骤 - 直接使用 sequelize-cli
sequelize-cli使用步骤
- 安装相关依赖
yarn add sequelize mysql2
yarn add -D sequelize-cli
- 创建 db 目录
mdkir db && cd db
- 初始化
npx sequelize init
- 配置数据库 - db/config/config.json 这里先只配开发环境
- 创建该数据库
npx sequelize db:create
该指令会按照 config.json 中的配置生成一个数据库,打开 sequel pro 即可看到 blog_dev
- 创建模型 - 会生成两个文件
npx sequelize-cli model:generate --name user --attributes iphone:string,password:string,type:integer
- 在数据库里生成表
npx sequelize db:migrate
- 创建种子文件 && 修改种子
npx sequelize-cli seed:generate --name init-user
db/seeders/xxx-init-user.js 按照注释给出的例子写个初始数据
- 运行种子
npx sequelize db:seed:all
- 测试一下
// 前端 app/src/App.tsx - ts类型先不写
import React, { useEffect, useState } from 'react'
function App() {
useEffect(() => {
fetch('http://localhost:9000/users')
.then((res) => res.json())
.then((res) => {console.log(res)})
}, [])
return (
<div className='App'>
<div>hhh</div>
</div>
)
}
export default App
// 后端 server/routes/users.js
var router = express.Router()
const User = require('./db/models').user
/* GET users listing. */
router.get('/', async (req, res, next) => {
const users = await User.findAll()
res.json({ users })
})
module.exports = router
// 后端 server/app.js
var usersRouter = require('./routes/users')
app.use('/users', usersRouter)