nodejs+koa+Sequelize实际

  • Node.js® 是一个开源、跨平台的 JavaScript 运行时环境。
  • Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 利用和 API 开发畛域中的一个更小、更富裕表现力、更强壮的基石。 通过利用 async 函数,Koa 帮你抛弃回调函数,并无力地加强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的办法,帮忙您疾速而欢快地编写服务端应用程序。
  • Sequelize是一个基于 promise 的 Node.js ORM, 目前反对 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Server. 它具备弱小的事务反对, 关联关系, 预读和提早加载,读取复制等性能。
  • pkg能够将 Node.js 我的项目打包为可执行文件,甚至能够在未装置 Node.js 的设施上运行。

根本架构

**model层:数据长久化,并提共数据处理,长久化操作接口
control层:业务模块流程管制,调用service层接口
service层:业务操作实现类,调用model层接口**

中间件

中间件作用特点
koa-static动态资源门路
koa-logger日志打点中间件
koa2-cors跨域解决
koa-jwt次要提供路有权限管制的性能,它会对须要限度的资源申请进行查看
koa-body是一个能够帮忙解析 http 中 body 的局部的中间件,包含 json、表单、文本、文件等。
SequelizeSequelize 是一个基于 promise 的 Node.js ORM, 目前反对 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Server. 它具备弱小的事务反对, 关联关系, 预读和提早加载,读取复制等性能。
koa-routerkoa 的一个路由中间件,它能够将申请的URL和办法(如:GET 、 POST 、 PUT 、 DELETE 等) 匹配到对应的响应程序或页面

数据库相干

  1. 数据库配置

    const config = { database: "data_base", // 数据库名称 username: "root", // 用户名 password: "xxxx", // 明码 host: "8.16.23.x", // 主机地址 port: "3306", // 端口号 dialect: "mysql", //数据库类型,反对: 'mysql', 'sqlite', 'postgres', 'mssql' // logging: true, // 是否启用日志}
  2. 数据库链接

    const config = require('./dbconfig') // 引入数据库配置信息const { Sequelize, DataTypes ,Op} = require("sequelize") // 引入sequelize依赖const sequelize = new Sequelize( config.database, config.username, config.password, {   dialect: config.dialect,   dialectOptions: {     dateStrings: true,     typeCast: true   },   host: config.host,   port: config.port,   logging: config.logging,   pool: { // 连接池配置     min: 0, // 最小连接数     max: 5, // 最大链接数     idle: 30000,     acquire: 60000,   },   define: {     // 字段以下划线(_)来宰割(默认是驼峰命名格调)     underscored: true   },   timezone: '+08:00' })

    3、定义表构造

    const { sequelize, DataTypes } = require("../config/connect")const alliances = sequelize.define( "aw_table", {   id: {     type: DataTypes.INTEGER(11),     allowNull: false, // 是否容许为空     autoIncrement: true,     primaryKey: true, // 是否主键   },   title: {     type: DataTypes.STRING,     allowNull: false,     comment: '名称'   }, }, {   timestamps: true,      // 不想要 createdAt   createdAt: 'create_time',      // 想要 updatedAt 然而心愿名称叫做 updateTimestamp   updatedAt: 'update_time' })// alliances.sync({force:true}) // 是否主动创立表

服务层