koa-msc
TypeScript icon, indicating that this package has built-in type declarations

1.2.29 • Public • Published

koa-msc

基于koa+sequelize+mysql,使用装饰器+typescript的一个NodeJS后端开发框架

样例

node engine dm

使用示例

  • 完整样例参考example目录代码

1.初始化项目

  1. 点击这里 根据ts-dev-template 模板仓库创建一个你自己的ts项目(需要你有github账号并能正常访问github官网)
  2. 使用git拉取刚刚创建好的项目
git clone https://github.com/用户名/仓库名.git # 此处仅为示范,请勿直接复制

2. 安装依赖

进入刚刚拉下来的项目文件夹,打开终端并执行一下命令

npm install koa-msc

3. 根据你的数据库类型安装对应的依赖

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

4. 新建入口文件src/index.ts

import {App} from 'koa-msc'
const app=new App({
    controller_path:'src/controllers',// 存储控制器的路径,相对于启动目录
    service_path:'src/services',// 存储服务的路径,相对于启动目录
    model_path:'src/models',// 存储表模型的路径,相对于启动目录
    transaction: true, // 是否启用事务
    log_level:'info', // 日志等级
    router:{ // KoaRouter初始化配置 参见 https://github.com/koajs/router/blob/master/API.md#new-routeropts
        prefix:'/api'
    },
    sequelzie:{ // Sequelize初始化配置 参见 https://www.sequelize.cn/core-concepts/getting-started
        dialect:'sqlite', // 数据库驱动名称
        storage:path.resolve(process.cwd(),'database.sqlite'),
        database:'test',
        logging(msg){
            app.logger.info(msg)
        }
    },
    // ... Koa初始化配置 参见 https://koajs.com/#application
})
app.start(7777)

5.在src目录新建三个文件夹,分别是controllers,services,models

mkdir controllers
mkdir services
mkdir models

6.在功能对应的文件夹新建User.ts,并编写相关代码

  1. src/models/User.ts
import {Column, Model,BaseModel} from 'koa-msc'
import {DataTypes} from "sequelize";

@Model
class UserModel extends BaseModel{
    @Column(DataTypes.STRING)
    user_id: string
    @Column(DataTypes.STRING)
    name: string
    @Column(DataTypes.INTEGER)
    age: number
}
  1. src/services/User.ts
import {Service,BaseService} from 'koa-msc'
import {ModelStatic,Model} from "sequelize";
import {UserModel} from '../models/User'

@Service
export class UserService extends BaseService<UserModel>{
}
  1. src/controllers/User.ts
import {Controller,BaseController, RequestMapping, Request} from 'koa-msc'
import {UserService} from '../services/User'

@Controller('/hello')
export class UserController extends BaseController<UserService> {
    @RequestMapping('list', Request.get)
    getUserList(ctx) {
        return this.service.list()
    }

    @RequestMapping('add', Request.post)
    addUser(ctx) {
        return this.service.add(ctx.req.body)
    }
}

7. 配置启动命令(若为模板仓库创建并未做修改,可跳过)

package.json的scripts添加启动命令

{
  // ... 其他配置
  scripts: {
    // ... 其他命令
    start: "node ./lib/index.js",// 执行前需先npm run build
    build: "tsc --project tsconfig.json && tsc-alias -p tsconfig.json",// 依赖typescript和tsc-alias,需自行安装依赖
    dev: "ts-node-dev -r tsconfig-paths/register ./src/index.ts", // 依赖 ts-node-dev和tsconfig-paths 需自行安装该依赖
    // ... 其他命令
  },
  // ... 其他配置
}

8. 启动项目

npm run dev # 开发环境
npm start # 生产环境(此处仅做演示,真实情况可根据个人需求处理,如tsc)

Readme

Keywords

Package Sidebar

Install

npm i koa-msc

Weekly Downloads

1

Version

1.2.29

License

MIT

Unpacked Size

59.4 kB

Total Files

15

Last publish

Collaborators

  • lc_cn