(二)连接数据库

907 阅读2分钟

前言

后端服务搭建好后,下一步就要处理数据了,我对数据库不太了解,就选用最常见的mysql了。以登录为例,实现最简单的创建用户功能。

安装数据库

安装mysql

安装教程很多,这里不再赘述,参考 MySQL安装(Mac版)
安装成功后启动

image.png

安装可视化工具

由于在cmd中直接写sql增删改查实在麻烦,需要安装可视化工具方便操作,这里使用 sequel pro。 由于 mysql 是 8 版本+,需要安装指定版本的 sequel pro,参考:
sequel pro 无法链接mysql8.0以上高版本

安装成功后打开

image.png 输入相关参数后点击连接

image.png 连接成功后可以选择数据库 or 创建新的数据库

image.png 进入到数据库后点击左下方加号即可创建表

image.png

ORM

ORM 概念参考: ORM实例教程
简单来说,就是可以使用面向对象编程的方式来操作关系型数据库,暂且不用去学习mysql语法。

这里选择 Sqeuelize。Sqeuelize 是一个基于 promise 的 Node.js ORM,支持多种数据库。

安装步骤 - 直接使用 sequelize-cli

sequelize-cli使用步骤

  1. 安装相关依赖
yarn add sequelize mysql2

yarn add -D sequelize-cli
  1. 创建 db 目录
mdkir db && cd db
  1. 初始化
npx sequelize init

image.png

  1. 配置数据库 - db/config/config.json 这里先只配开发环境

image.png

  1. 创建该数据库
npx sequelize db:create

该指令会按照 config.json 中的配置生成一个数据库,打开 sequel pro 即可看到 blog_dev

image.png

  1. 创建模型 - 会生成两个文件
npx sequelize-cli model:generate --name user --attributes iphone:string,password:string,type:integer

image.png

  1. 在数据库里生成表
npx sequelize db:migrate

image.png

  1. 创建种子文件 && 修改种子
npx sequelize-cli seed:generate --name init-user 

db/seeders/xxx-init-user.js 按照注释给出的例子写个初始数据

image.png

  1. 运行种子
npx sequelize db:seed:all

image.png

  1. 测试一下
// 前端 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.jsvar usersRouter = require('./routes/users')
app.use('/users', usersRouter)

image.png