微商建立网站,店铺代运营服务,外贸网站广告宣传网站,网上购物系统前言
前面我们已经介绍了第二阶段的第1-4点内容#xff0c;本篇介绍第5点内容#xff1a;数据库集成#xff08;koamysql#xff09;
也是第二阶段内容的完结。
一、学习目标 在koa项目中正常连接数据库#xff0c;对数据表进行增删改查的操作。 二、操作步骤 本篇文章…前言
前面我们已经介绍了第二阶段的第1-4点内容本篇介绍第5点内容数据库集成koamysql
也是第二阶段内容的完结。
一、学习目标 在koa项目中正常连接数据库对数据表进行增删改查的操作。 二、操作步骤 本篇文章会使用到koasequelizemysqlapipost用于测试http方法 注意文章很多的操作步骤和“express框架的数据库集成”基本上是一样的参考文章 【express-generator】09-连接和使用数据库-CRUD 操作第二阶段完结-CSDN博客 所以文章中会简单跳过/省略一些简单的步骤。 1、安排依赖
在项目根目录下运行以下命令安装必要的依赖
npm install koa mysql2 sequelize koa-router koa-bodyparser 2、配置数据库连接 注意每个人的数据库连接连接信息不一样对应修改自己的信息。 在state2/models/dbConnect.js中配置数据库连接信息
// 该文件负责连接数据库
const { Sequelize } require(sequelize);// 创建数据库连接
const sequelize new Sequelize(mysite2, root, 123456aa, {host: localhost,dialect: mysql,logging: false
});const startDBasync() {try {await sequelize.authenticate();console.log(数据库已建立起连接.);} catch (error) {console.error(Unable to connect to the database:, error);}
}
startDB()// 向外暴露这个连接实例
module.exports sequelize;3、定义数据模型
在state2/models/userModel写入以下代码
const { DataTypes } require(sequelize);
const sequelize require(./dbConnect);// 定义数据模型
module.exports sequelize.define(koauser, {// 这张表拥有哪些字段name : {type : DataTypes.STRING,allowNull : true},age : {type : DataTypes.INTEGER,allowNull : true},
},{//与模型定义时的名称一致。 // 比如定义了上述定义了content模型设置了这个字段创建表的名字也是content。freezeTableName : true, //用于记录数据的创建时间和更新时间。createdAt : false, updatedAt : false
});这里我们定义了一个名为“koauser”的数据表有name和age字段分别是string和integer数据类型。 4、初始化Sequelize和加载模型
在state2/demodels/db.js写入以下代码
// 该文件负责对数据库进行一个初始化操作
const sequelize require(./dbConnect); // 数据库连接实例const userModel require(./userModel); // 数据模型
const initDataasync function () {// 将数据模型和表进行同步await sequelize.sync({alter: true,})// 同步完成之后有一些表是需要一些初始化数据// 查询这张表有没有内容没有内容才初始化数据const userCount await userModel.count();if (!userCount) {// 进入此 if说明该表没有数据我们进行一个初始化await userModel.create({name: Tom,age:18})console.log(初始化内容数据表数据完毕...);}console.log(数据库数据已经准备完毕....);
}
initData()5、创建Koa应用并集成Sequelize
在state2/demo5.js中写入以下代码
const Koa require(koa);
const Router require(koa-router);
const bodyParser require(koa-bodyparser);
// const models require(./models);
const userModel require(./models/userModel);
const app new Koa();
const router new Router();require(./models/db);
// 使用bodyParser中间件解析请求体
app.use(bodyParser());// 定义路由
router.get(/, async (ctx) {ctx.body Welcome to Koa with Sequelize!;
});// 使用路由中间件
app.use(router.routes()).use(router.allowedMethods());app.listen(3000, () {console.log(Server is running at http://localhost:3000);
});
启动服务看是否正常连接数据库和创建、初始化数据表。
在state2的目录下打开终端执行node demo5.js 启动之前数据库的表情况 启动之后多了一个koauser的数据表并且有一条数据。 6、增删改查CRUD操作 Create:增加 Read:查 Update更新 Delete:删除 6.1、查找所有用户信息
在state2/demo5.js中新增代码
// 查找所有用户
router.get(/users, async (ctx) {const users await userModel.findAll();ctx.body users;
});
方法放在这个位置 测试启动服务apipost工具
新增get方法点击发送则会得到以下结果 6.2、 增加新的用户
// 创建用户
router.post(/user, async (ctx) {const { name, age } ctx.request.body;try {const user await userModel.create({ name,age });ctx.body user;} catch (error) {ctx.status 400;ctx.body { error: error.message };}
});
测试启动服务添加post方法 在数据表中刷新可以看到新增的数据项
6.3、查找单条用户数据
为了后续测试先增加了几条数据 // 查找单个用户
router.get(/user/:id, async (ctx) {const { id } ctx.params;try {const user await userModel.findByPk(id);if (user) {ctx.body user;} else {ctx.status 404;ctx.body { error: User not found };}} catch (error) {ctx.status 400;ctx.body { error: error.message };}
});
测试启动服务添加get方法
查找id为1的数据项 查找id为3的数据项 6.4、更新用户信息 // 更新用户router.put(/user/:id, async (ctx) {const { id } ctx.params;const { name,age } ctx.request.body;try {const user await userModel.findByPk(id);if (user) {await user.update({ name,age });ctx.body user;} else {ctx.status 404;ctx.body { error: User not found };}} catch (error) {ctx.status 400;ctx.body { error: error.message };}}); 测试启动服务测试put方法
我们尝试将id为1的数据项对name进行修改成Rura(原本是Tom) 响应结果 刷新数据表可以看见id为1的数据项的name已经被修改。
6.5、删除用户信息 // 删除用户router.delete(/user/:id, async (ctx) {const { id } ctx.params;try {const user await userModel.findByPk(id);if (user) {await user.destroy();ctx.status 204;} else {ctx.status 404;ctx.body { error: User not found };}} catch (error) {ctx.status 500;ctx.body { error: error.message };}});
测试启动服务测试delete方法
这里我们尝试将id为4的数据项进行删除 点击发送在数据表中刷新查看结果。 三、小结
这篇我们介绍了在koa中如何使用数据库创建和初始化数据表并介绍了数据表的常用操作增删改查文章以“代码示范测试”的内容呈现。文章中用到的代码示范我已经同步更新在代码仓库中有需要的朋友请自行获取koa练习: koa练习
欢迎大家star和fork也欢迎一起完善这个代码仓~
koa专栏的第二阶段的内容到此结束后续的文章我会更新第三阶段的内容。
关注我及时获取最新文章消息~