一、相关技术介绍
1、node.js是一个运行在chromeJavascript运行环境下(俗称GoogleV8引擎)的开发平台,用来方便快捷的创建服务器端网络应用程序。
2、express是封装好rep、res(node的框架),基于Node.js平台的web应用开发框架
3、sequelize是ORM的一种(是一个基于Promise 的Node.js ORM)
ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写
二、api需求
1、根据客户端传递过来的不同的参数(状态,页码)查询任务列表
2、实现新增一个任务功能(名称,截止日期,内容)
3、实现一个编辑的功能:根据客户端传递的任务对象(已经存在的数据)进行编辑,(名称,截止日期,内容,id)
4、删除一个任务(id)
5、修改任务的状态(id,状态->待办/完成)
三、项目步骤
1、新建一个node项目(打开终端)
mkdir todo//新建文件夹
cd todo//进入
npm init -y//新建node项目
git init//git初始化仓库
2.安装相关依赖
npm init express mysql2 sequelize sequelize-cli body-parser -S
npm init nodemon -D
3.在项目里添加.gitignore文件
node_modules
4.新建src->app.js
```
const express = require('express');
const app = express();
//BodyParser是express常用中间件 用来解析express的post请求的body参数
const bodyParser = require('body-parser');
const models = require('../db/models');
app.use(express.json());
// for parsing application/xwww-form-urlencoded
app.use(express.urlencoded());
// for parsing application/xwww-form-urlencoded
app.use(bodyParser.urlencoded({
extended: true
}));
// 中间件回调
app.use((err, req, res, nest) => {
if (err) {
res.status(500).json({
message: err.message
})
}
})
app.listen(3000, () => {
console.log('服务器启动成功');
})
```
5.建议在新建一个文件夹db创建对应的orm
6.进入db,初始化 项目的 数据库配置信息
npx sequelize-cli init
则会生成如图所示的目录
7.修改config配置
database:要连接的数据库
8. 生成模型文件
8.1. migrate文件
8.2. model文件
生成数据表
npx sequelize-cli model:generate --name Todo --attributes name:string,deadline:date,content:string
8.2.1在migrations把没有必要的参数:createAt、updateAt、保存。
8.2.2在modles的todojs,添加timestamps:false,防止在表添加新列时,缺乏这两个参数报错
8.3 持久化,模型对应的[数据库表]
1.生成对应的数据库表:npx sequelize db:migrate
2.Todo新添字段status
8.4在navicat删除对应的Todo表
8.4.1 在navicat删除对应的Todo表
8.4.2 在migrations文件夹找到对应的js文件添加
```
status: {
type: Sequelize.INTEGER
},
```
8.4.3 在models的todo.js 添加
```
status: {
type: DataTypes.INTEGER,
defaultValue: 1
}
```
9.express结合sequelize写对应的查看任务列表、创建一个todo(列表)、编辑列表、删除任务or修改状态
9.1 在app.js引入对应的models
const models = require('../db/models');
9.2 用express写对应api需求
10.项目的发布和运维(PM2 工具)
启动命令/运维命令/运维文档
10.1 pm2 start ecosystem.config.js
10.2 pm2 log
10.3 pm2 restart ecosystem.config.js
10.4 对应的ecosystem.config.js