# koa2-lab-service **Repository Path**: gl-services/koa2-lab-service ## Basic Information - **Project Name**: koa2-lab-service - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-22 - **Last Updated**: 2021-01-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # koa2-lab-service npm install -g koa-genator koa2 -e koa2-lab-service npm install npm run dev npm install cross-dev ### mysql 新增 config 配置文件 ``` const config = { // 启动端口 port: 3000, // 数据库配置 database: { DATABASE: 'geeklyc', USERNAME: 'root', PASSWORD: '123456', PORT: '3306', // HOST: '10.0.4.16' 部署需要用服务器ip HOST: '127.0.0.1' } } module.exports = config; ``` 安装 mysql ``` yarn add mysql ``` 新建 sql.js ``` // 封装的mysql模块方法 const mysql = require('mysql'); // 配置 const config = require('../../config/config'); // 创建线程池 const pool = mysql.createPool({ host : config.database.HOST, port : config.database.PORT, user : config.database.USERNAME, password : config.database.PASSWORD, database : config.database.DATABASE }); // sql方法 let allSqlAction = function(sql, values) { return new Promise((resolve, reject) => { pool.getConnection(function(err, connection) { if (err) { let data = { code:500, message:"请求失败", data:err }; reject(data); } else { connection.query(sql, values, (err, rows) => { if (err) { let data = { code:500, message:"请求失败", data:err }; reject(data); } else { resolve(rows); } connection.release(); }); } }); }); } module.exports = { allSqlAction, escape: mysql.escape } ``` https://cloud.mongodb.com/v2/5fe48819a690692054d3a948#clusters geeklyc yarn add mongoose http://mongoosejs.net/docs/api.html#insertmany_insertMany https://mongodb.net.cn/manual/tutorial/getting-started/ [mongodb 官网](https://cloud.mongodb.com/v2/5fe48819a690692054d3a948#clusters) 请求 Query String 如 ?q=keyword Router Params 如 /users/:id Body { name: "" } Header Accept, Cookie 响应 Status 200/400 Body Header Content-Type, Allow 控制器最佳实践 + 每个资源的控制器放在不同的文件里 + 尽量使用类+类方法的形式编写控制器 + 严谨的错误处理 https://www.cnblogs.com/ssaylo/p/12867945.html // 请求错误处理 yarn add koa-json-error // 请求参数校验 yarn add koa-parameter yarn add cross-env -D ### 认证与授权 session yarn add koa-jwt ### 上传图片 用户头像 封面图片 问题和回答中的图片 话题图片 基础功能:上传图片、生成图片链接 附加功能:大小、类型、高低中分辨率、cdn 技术方案 阿里云 oss等云服务(推荐) 自己的服务器 koa-body 替换掉 koa-bodyparser 设置图片上传目录 使用postman上传文件 yarn add koa-body 获取文件http服务 yarn add koa-static 设置静态 文件目录 生成图片链接