KOA2

文章目录

  • KOA2
    • 手动搭建 koa2 项目
    • 自动重启配置文件
    • 添加路由
    • 解析 POST 请求参数
    • 控制器中的操作步骤
    • 拆分 service 层
    • 数据库操作 —— sequelize 工具
    • 创建实体(数据模型)
    • 数据库增删改查 CRUD

手动搭建 koa2 项目

  1. npm init -y 创建 package.json 文件
  2. git init git 初始化
  3. 创建 .gitignore 文件,并将不需要 git 上传的文件放上面,例如 node_modules文件夹
  4. 安装 koa 框架 npm i koa
  5. 创建 src 目录,以及 app.js 入口文件
  6. 编写一个最简单的服务器
const Koa = require('koa');
// 实例化koa
const app = new Koa();// app.use()注册中间件
app.use((ctx, next) => {// ctx 是http的上下文,next 放行// ctx.body是返回给前端的内容ctx.body = {};
});app.listen(3000, () => {console.log('端口3000启动了');
});

自动重启配置文件

dotenv 的作用,读取根目录中的 .env 文件,将配置放在 process.env

  1. 安装 dotenv npm i dotenv
  2. 在根目录下创建文件 .env,编写一些环境配置的常量
APP_PORT=8000
  1. /src/config 文件夹中创建 config.default.js 文件
const dotenv = require('dotenv');
dotenv.config();
module.exports = process.env;

添加路由

  1. 安装路由npm i koa-router,并导包
  2. 实例化路由对象
const Router = require('koa-router');const { API_PREFIX } = require('../config/config.default');
// 路由前缀
const router = new Router({ prefix: API_PREFIX });
  1. 编写路由
const Router = require('koa-router');const { API_PREFIX } = require('../config/config.default');const User = require('../controller/userController');const router = new Router({ prefix: API_PREFIX });router.post('/user/register', User.register);module.exports = router;
  1. 注册中间件
const Routes = require('../router');app.use(Routes.routes());
  1. 编写控制器

路由: 解析 url,分发给控制器对应的方法;
控制器: 处理不同的业务

解析 POST 请求参数

  1. 安装第三方插件 npm i koa-body
  2. 引入第三方插件 const { koaBody } = require('koa-body');
  3. 注册第三方插件 app.use(koaBody());
  4. 使用解析
// 在控制器中的第一个参数ctx中会有 ctx.request.body 字段就是post请求参数
async register(ctx, next) {console.log(ctx.request.body);ctx.body = ctx.request.body;
}

控制器中的操作步骤

  1. 获取前端传递的数据
  2. 操作数据库的到数据库中的数据(service 层)
  3. 返回结果给前端

拆分 service 层

service 层用于操作数据库

// 操作数据库(增删改查)
class UserService {async createUser({ username, password }) {// 数据库的操作return { username: username + '1', password };}
}// 导出一个新对象
module.exports = new UserService();

数据库操作 —— sequelize 工具

sequelize 是一个 ORM 数据库工具。
ORM 是对象关系映射,将数据表当做对象处理

  • 数据表映射(对应)一个类
  • 数据表中的数据行(记录)对应一个对象
  • 数据表的字段对应对象的属性
  • 数据表的操作对应对象的方法

使用:

  1. 安装第三方插件 npm i sequelize ,同时还要安装驱动程序
// 不同数据库对应不同驱动
npm i pg pg-hstore # PostgreSQL
npm i mysql2 # MySQL
npm i mariadb # MariaDB
npm i sqlite3 # SQLite
npm i tedious # Microsoft SQL Server
npm i ibm_db # DB2
  1. 连接数据库
const { Sequelize, Model } = require('sequelize');// 实例化 Sequelize
const seq = new Sequelize('数据库名称', '用户名', '密码', {host: '主机地址',dialect: 'mysql', // 数据库类型
});// 测试数据库连接是否成功
try {const res = seq.authenticate();console.log(res);
} catch (err) {console.log(err);
}module.exports = seq;
  1. 在配置文件 .env 中配置数据库信息
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PWD=123456
MYSQP_DB=sjkmz
  1. /src/db/seq.js 文件中将配置信息修改
const { Sequelize, Model } = require('sequelize');
const { MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PWD, MYSQP_DB } = require('../config/config.default');
// 实例化 Sequelize
const seq = new Sequelize(MYSQP_DB, MYSQL_USER, MYSQL_PWD, {host: MYSQL_HOST,port: MYSQL_PORT,dialect: 'mysql', // 数据库类型
});// 测试数据库连接是否成功
try {const res = seq.authenticate();console.log(res);
} catch (err) {console.log(err);
}module.exports = seq;

创建实体(数据模型)

使用步骤:

  1. 创建 model 文件夹存储项目所有的数据模型
  2. 定义数据模型
// 数据模型(实体)
const { DataTypes } = require('sequelize');
const seq = require('../db/seq');
const User = seq.define('模型名称',{// 会自动创建id// 字段定义/* 字段名: {type:DataTypes.STRING,//定义数类型allowNull: false,// 不能为空unique: true,// 唯一的comment: '用户名,唯一',// 注释defaultValue: '131',// 默认值}*/user_name: {type: DataTypes.STRING,allowNull: false,unique: true,comment: '用户名,唯一',},},{// options的配置timestamps: false, // 不会向每个模型添加 createdAt 和 updatedAt 字段}
);
// User.sync()  如果表不存在,则创建该表(如果已经存在,则不执行任何操作)
// User.sync({ alter: true }) 这将检查数据库中表的当前状态(它具有哪些列,它们的数据类型等),然后在表中进行必要的更改以使其与模型匹配.
// 将创建表,如果表已经存在,则将其首先删除
User.sync({ force: true });module.exports = User;

数据库增删改查 CRUD

// 增
数据表名.create({表中的字段,
});
// 删
数据表名.destroy({});
// 改
数据表名.update({}, {});
// 查
数据表名.findAll(); // 查找数据表中的所有数据的所有字段
数据表名.findAll({attributes: [字段名], // 查找数据表中的所有数据的指定字段where: {}, // 增加查询条件
});

KOA2项目简单搭建相关推荐

  1. spring-boot项目简单搭建

    Spring Boot充分利用了JavaConfig的配置模式以及"约定优于配置"的理念,能够极大的简化基于Spring MVC的Web应用和REST服务开发. 要Spring B ...

  2. 创建vue项目(一)搭建vue-cli、项目文件介绍、简单配置

    记录一下 拉取项目时 npm run dev 报错 输入:npm rebuild node-sass 再重新 npm run dev 如果不能解决,请看这里 一.搭建vue-cli vue creat ...

  3. 简单搭建一个SSM项目(一)

    简单搭建一个用户管理的SSM项目框架,虽然也能用servlet+jdbc搭建更简单的,不过个人感觉工作中更多用的ssm框架项目,这里就简单用ssm来搭建需要的项目吧. 准备工具:eclipse.jdk ...

  4. vue.js+koa2项目实战(四)搭建koa2服务端

    搭建koa2服务端 安装两个版本的koa 一.版本安装 1.安装 koa1 npm install koa -g 注:必须安装到全局 2.安装 koa2 npm install koa@2 -g 二. ...

  5. Android组件化打造知乎日报系列(一)—— 项目架构搭建

    Android组件化打造第三方知乎日报系列(一)-- 项目架构搭建 本节完整代码可以前往github查看,项目地址:github.com/N0tExpectEr- Android组件化打造知乎日报系列 ...

  6. (三) Angular2项目框架搭建心得

    前言: 在哪看到过angular程序员被React程序员鄙视,略显尴尬,确实Angular挺值得被调侃的,在1.*版本存在的几个性能问题,性能优化的"潜规则"贼多,以及从1.*到2 ...

  7. 从壹开始前后端分离【 .NET Core2.2 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储+服务+抽象接口模式...

    前言 1.@LearningCoding 小伙伴关于用Sqlsugar在mysql数据库上的研究成果: sqlsugarcore支持mysql等数据库,在DbContext里面只需要设置dbtype为 ...

  8. 基于Node的Koa2项目从创建到打包到云服务器指南

    一 创建koa2项目 二 放到云服务器 一 创建koa2项目 为了节省开发成本,本文采用koa-generator脚手架来创建koa2项目 首先npm安装脚手架 $ npm install -g ko ...

  9. linux基本项目环境搭建

    文章目录 linux基本项目环境搭建 java环境搭建 获取java源码包 解压 配置环境变量 使配置文件生效 验证 nginx安装 下载(java也可用此方法下载) 解压 配置(configure) ...

最新文章

  1. Tomcat 调优及 JVM 参数优化
  2. matlab 变参数 方程组,解带参数方程组 运行结果竟然自己带了新参数z
  3. 台达s1变频器参数表_各大品牌变频器万能密码汇总
  4. 列出最少8种开源软件_您的公司可以支持和维持开源的8种方式
  5. linux中删除mysql用户_linux系统下mysql添加用户、删除用户、授权、修改密码等sql命令使用...
  6. 如何将div与页面的中间(水平/宽度)对齐[重复]
  7. 程序员为什么热衷造轮子?
  8. LAMP_PHP配置
  9. flinkTime与Window入门详解
  10. python爬虫爬取网页图片存储本地_Python爬虫抓取糗百的图片,并存储在本地文件夹...
  11. 使用bilibili开源的flvjs实现摄像头rtsp视频直播
  12. win10如何共享打印机_局域网内,办公室USB接口打印机如何共享
  13. xyoj 6042:让人头疼的“双十一”
  14. WCF 项目应用连载[6] - 升级Lig服务 - 设计ILigger 构建一个完善的Lig版本
  15. 香帅的北大金融学课笔记8 -- 债务与债券
  16. 【译】「食人的大鹫」的运动方法 程序动画技术
  17. 误删桌面文件如何恢复?
  18. 配电房轨道式智能巡视机器人_HT-TSX-600-配电房轨道机器人视频巡检系统
  19. 本地调试(local debug)Hive源码
  20. 富民银行java开发_富民银行富多利怎么样?从三个方面来看

热门文章

  1. centos7重启或关机卡死
  2. 大学生必学练习题 - Java 语言经典50例
  3. 基于miu小波变换的人体步态数据检测和识别算法matlab仿真
  4. 从0开始搭建一个自己的问卷系统
  5. 【无标题】光纤收发器TX、RX分别表示什么?区分单纤双纤收发器的方法
  6. bs基于vue推理小说旧书置换系统
  7. 都2021年了,为什么想回看5分钟前写的代码就这么难
  8. Veeam拍了拍你,云数据管理从现在起步
  9. ping包 命令格式 用法集
  10. Wonderful Life