前言
在 node.js 的生态圈里,npm 包是不可或缺的一部分。而在 egg.js 项目中,egg-typescript-sequelize可以作为数据操作的解决方案。本篇文章旨在为大家介绍如何使用 npm 包 egg-typescript-sequelize,为它的安装配置以及如何进行 CRUD 操作提供详细的指导。
简介
egg-typescript-sequelize 如其名,是基于 egg.js 框架的一款用 TypeScript 编写,依赖于 sequelize ORM 操作数据库的插件。使用 egg-typescript-sequelize 可以让我们更加便捷地利用 TypeScript 来操作数据库。它具有以下特点:
- 操作方式类似于模型(Model)化的操作,使得代码具有更高的可读性。
- 它支持出色的sequelize ORM,支持多种关系型数据库。
- 使用 TypeScript 编写,让代码具有更好的类型检查。
安装
- 在命令行中初始化一个基于 egg.js 的项目
$ mkdir egg-ts-seq && cd egg-ts-seq $ npm init egg --type=ts
- 安装 npm 包
$ npm install egg-typescript-sequelize sequelize mysql2
配置
在 ./config/plugin.ts
文件中添加如下配置:
-- -------------------- ---- ------- ------ - --------- - ---- ------ ----- ------- --------- - - ---------- - ------- ----- -------- --------------- -- -- ------ ------- -------
在 app.ts
中进行 sequelize 和数据库的配置:
-- -------------------- ---- ------- ------ - ----------- - ---- ------ ------ - -- ---- ---- ------- ------ --------- - --------------------- ------ ------- ----- ----------- - ------------------- -------- ---- ------------ -- ----- --------- - -- --------- -- ----- ------ - -------------------------- ----- --------- - --- ---------- ---------------- ---------------- ---------------- - ---------- -------- -------- --------- --------- ------- - ----------- ------ ---------------- ----- - - -- -- ---- --- - ----- ------------------------- ----------------------- --- ---- ----------- ---------------- - ----- ------- - --------------------- -- ------- -- --- ----------- ------- - -------------- - ----------------- ------------------ - ---------- - ----- ----------- - -- ----- -- ------------------ ---- -- ------- ----- --------- -- -------------------- --- -------- - --- - ----- --------------------- ------ ----- --- - ----- --- - --------------- - - - -
初始化模型
在定义模型前,我们需要先通过 sequelize.define 方法来定义一个数据库表的结构,并指定如何映射数据库列名和数据类型。例如:
-- -------------------- ---- ------- ------ - ----------- - ---- ------ ------ - -------- ------ - ---- ------------ ------ ------- ----- ------------ -- - ----- - --------- - - ---------- ----- ------- - --------------------------- - --- ------ -------- ----------- ----- -------------- ------ ------ ----------- -------- ------------ ----------- ----------- ----------- ----------- --- ------ ------- - --
以上代码表示我们通过 Article 模型对名为 'article' 的表进行操作,该表字段包括 id、title、content、created_at、updated_at,其中 id 作为主键,并自动递增。
增删改查
创建数据
在创建新数据时,我们可以使用 sequelize.Model.create() 方法来插入一个新行到指定的数据库表中:
-- -------------------- ---- ------- ----- ------- - ----- -------------------------- ------ ---------- -------- ------- --- ------ - --- ----------- ------ -------------- -------- ---------------- ----------- ------------------- ----------- ------------------- --
查询数据
接下来我们查询数据库中的文章列表数据。使用 Sequelize 中的 findAll() 来返回符合条件的所有数据:
-- -------------------- ---- ------- ----- -------- ------ - ---------- ----- ----- - - ------ - ---------- ------------ -- ----- ---- - ----- --------------------------- ------- --------------- -- ---- ---- ------ -------------- -- ----- ---- ------ ------ - -------------- ------- - --- ------ -----
以上代码表示返回符合 title 包含 'title' 参数的文章数据,并按时间倒序排列,每页数据为 limit 条,偏移量为 offset。
更新数据
要更新数据,同样需要先找到相应的行,然后再调用 save() 方法将数据进行修改并保存到数据库:
const {id, title} = ctx.request.body; const article = await ctx.model.Article.findByPk(id); if (!article) { ctx.throw(404, 'article not found'); } article.title = title; return await article.save();
删除数据
最后,我们需要实现删除一篇文章的功能,同样需要通过 find() 找到相应的文章记录,然后调用 destroy() 方法进行删除:
const id = ctx.params.id; const article = await ctx.model.Article.findByPk(id); if (!article) { ctx.throw(404, 'article not found'); } return await article.destroy();
结论
通过本篇文章,我们详细的介绍了 npm 包 egg-typescript-sequelize 的使用方法,并提供了增删改查的示例代码。借助于 egg-typescript-sequelize,我们可以轻松地进行操作数据库,并且基于 TypeScript 的强类型检查可大大减少出错和调试时间,提高项目开发的效率。感兴趣的同学可以尝试在自己的项目中使用 egg-typescript-sequelize,提高你的代码质量和效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60067356890c4f7277583c5d