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、表单、文本、文件等。 |
Sequelize | Sequelize 是一个基于 promise 的 Node.js ORM, 目前反对 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Server. 它具备弱小的事务反对, 关联关系, 预读和提早加载,读取复制等性能。 |
koa-router | koa 的一个路由中间件,它能够将申请的URL和办法(如:GET 、 POST 、 PUT 、 DELETE 等) 匹配到对应的响应程序或页面 |
数据库相干
数据库配置
const config = { database: "data_base", // 数据库名称 username: "root", // 用户名 password: "xxxx", // 明码 host: "8.16.23.x", // 主机地址 port: "3306", // 端口号 dialect: "mysql", //数据库类型,反对: 'mysql', 'sqlite', 'postgres', 'mssql' // logging: true, // 是否启用日志}
数据库链接
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}) // 是否主动创立表
服务层