• Node.js 项目的常用命令

  • Express 的路由配置

  • RESTful 风格路由

  • 如何获取请求中的数据?

  • 操作数据库的常用方法

我们终于把一个完整的增删改查做出来了,还带了模糊搜索与分页功能。而且代码也做了大量优化,将重复的内容全都进行了封装。这节课的内容,咱们一起来回顾一下,看看都学了些什么东西。

1. Node.js 项目的常用命令

两个全局包

开发Node.js项目,首先,要全局安装两个包。

命令

说明

npm i -g express-generator@4

安装 express 脚手架

npm i -g sequelize-cli

安装 sequelize 命令行工具

  • 先安装了express脚手架,这样就可以用命令创建项目。

  • 接着安装了sequelize-cli,这样才能执行模型、迁移、种子相关的命令。

因为它们都是全局安装的,所以在电脑上,只需要运行一次,就不用重复再次安装了。

与创建项目相关的

当这些都装好了,就要来创建项目了。初始化一个项目的相关步骤有以下这些

命令

说明

express --no-view clwy-api

创建项目

cd clwy-api

进入项目里

npm i

安装依赖包

npm i nodemon

安装 nodemon

npm i sequelize mysql2

安装 sequelize 与 mysql2 依赖包

sequelize init

初始化 sequelize

npm start

启动服务

  • 创建项目,并指定不需要视图文件。还要记得,要删除 public/index.html 文件。

  • 接着要用 cd 命令,进入项目里。

  • npm i 安装项目所需依赖包。

  • 安装 nodemon,装完后,记得要配置 package.json,这样修改代码后无需重启服务。

  • 安装 sequelize 与 mysql2 依赖包。这样项目里才能使用 sequelize 操作 mysql。

  • 然后初始化 sequelize,会生成 ORM 所需要的目录和配置文件。记得修改 config/config.json 文件中数据库连接的配置。

  • npm start 后,就可以通过http://localhost:3000来访问了。

日常开发常用命令

项目建好后,就要开发实际的功能模块了

命令

说明

sequelize db:create --charset utf8mb4 --collate utf8mb4_general_ci

创建数据库

sequelize model:generate --name Article --attributes title:string,content:text

创建模型

sequelize db:migrate

运行迁移文件

sequelize seed:generate --name article

创建种子文件

sequelize db:seed --seed xxx-article

运行指定种子文件

sequelize db:seed:all

sequelize db:migrate:undo

运行所有种子文件

回滚迁移文件

  • 先要去创建数据库了。也可以使用命令创建,但在部分 Windows 中无法成功创建,那就直接使用 Navicat 手动创建也一样。

  • 然后根据需求,去创建模型。记住模型是单数,但是表名是复数。并指定所需字段和类型,同时还会自动生成相关的迁移文件。

  • 打开迁移文件后,根据需求人工进行调整。改完后,运行迁移命令,就会自动的创建表了。

  • 可以使用种子文件,来给表中添加测试数据,而不用通过 SQL 导入默认测试数据。

  • 根据需求调整种子文件。然后运行一下种子,就会自动填充数据到表里了。

  • 还有个命令,它会运行所有的种子文件。缺点是无论之前有没有运行过,都会全部重新运行一次。所以这个命令只适合数据库还什么数据都没有的情况下。

PS:这些常用命令,大家无需背下来。因为我,也根本背不了这些。每次开发,我都是复制了,根据需求调整一下,直接拿去跑。

2. Express 的路由配置

再来看看路由部分,路由的配置有两部分。

  • 第一个是在根目录的app.js里。先要去引用后台的文章路由文件,然后再use一下

const adminArticlesRouter = require('./routes/admin/articles');

app.use('/admin/articles', adminArticlesRouter);

use这里,我们写好了一个路径/admin/articles,那也就是说,这个文件所有的路由,都会以这个地址为开头。

  • 第二个部分就是在/routes/admin/articles.js文件里每个方法上的路径配置了。

router.get('/', async function (req, res, next) {

});

3. RESTful 风格路由

请求方式

请求地址

说明

GET

/admin/articles

查询文章列表

GET

/admin/articles/:id

查询文章详情

POST

/admin/articles

创建文章

PUT

/admin/articles/:id

更新文章

DELETE

/admin/articles/:id

删除文章

每个路由的基础形式都是这样子。不同的是,请求方式可能是get,也可能是postput或者delete

而且大家在开发过程中也发现了,有好几个接口地址都是一样的,只是请求方式不同而已。

这里的请求地址,其实就两种,要么是/admin/articles,要么就是在后面多跟上了一个:id。但是却可以对应五个不同的路由方法,就是因为他们前面的请求方式各不相同,这样Express也能正确的做出区分。

这种路由的定义方式,是非常标准的,它有一个专门的名称,叫做RESTful。将来大家在其他地方看到RESTful这个单词,就要明白是怎么回事了。

其实请求方式里,还有一个PATCH,它也是用来做修改的,它的意思是打补丁。它的推荐的场景是只更新个别字段,而不是更新整条记录的全部字段。但是这里不推荐大家使用,因为在微信小程序里,对这种请求方式的支持有问题。所以凡是修改请求,我们全部都使用直接用PUT好了。

4. 如何获取请求中的数据?

方法

说明

例子

req.params

获取路由里的参数

/admin/articles/:id

req.query

获取 URL 地址里的查询参数

/admin/articles?title=hello&currentPage=2&pageSize=20

req.body

获取通过 POST、PUT 发送的数据

这三个方法请大家务必分清楚

  • req.params,是获取路由里配置了,带:号的这种数据

  • req.query,是用来获取带?号&符号的数据

  • req.body,则是用来获取POSTPUT方式发送过来的数据,最常见的就是表单里的数据。

5. 操作数据库的常用方法

方法

说明

findAll

查询所有记录

findAndCountAll

查询所有记录,并统计数据总数

findByPk

通过主键查询单条数据

create

创建新数据

update

更新数据

destroy

删除数据

这些方法就是最常用的增删改查方法了。这几个方法,都还是比较简单的,不算难。我们通过方法的名字,就能轻易的分辨,它们是用来干嘛的了。