关于javascript:nodejskoaSequelizepkg后端服务实践

23次阅读

共计 1909 个字符,预计需要花费 5 分钟才能阅读完成。

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 等)匹配到对应的响应程序或页面

数据库相干

  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}) // 是否主动创立表 

服务层

正文完
 0