# koa搭建node服务 **Repository Path**: riki1020/koa_building_node_services ## Basic Information - **Project Name**: koa搭建node服务 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-09-05 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 介绍 > 使用koa搭建node服务 并连接mongodb返回前端数据 > ## 项目初始化 > 首先保证你的node环境已经就绪 * 1、创建项目文件夹 > 创建文件夹test,在文件夹中shift+右键 在此处运行命令行 > 运行 npm init --y * 2、 安装依赖 >npm i koa koa-body koa-static koa-cors ## 创建服务 ```js // server.js /* * 1、在项目文件中创建一个server.js文件 * 2、在项目跟目录运行 node server.js * 3、浏览器地址输入 http://127.0.0.1:3001/ 返回 your server run seccess */ const Koa = require("koa"); const app = new Koa(); // ctx表示一次对话的上下文(包括 HTTP 请求和 HTTP 回复) app.use(ctx => { ctx.body = "your server run seccess" }) // 监听3001端口 app.listen(3001, () => { console.log("server run on 127.0.0.1:3001"); }); ``` ## 路由使用 ```js /* * 1、创建routers文件夹 文件夹下的每个目录都将是一个访问的处理 * 2、routers文件夹 创建一个demo文件夹并拥有index.js * 3、在routers文件夹下创建routers.js 用户集中路由 * 目录结构 -server.js -routers -routers.js -demo -index.js -router.js */ // ----server.js 文件 ---- const Koa = require("koa"); const koaBody = require("koa-body"); const static = require('koa-static') //const cors = require('koa-cors') // 引入router创建好的 let router = require("./router.js"); const app = new Koa(); // 解析post请求体 app.use(koaBody()); // 设置跨域 用不用插件都可 app.use(async (ctx, next) => { ctx.set("Access-Control-Allow-Origin", "*"); return next(); }); // app.use(cors()) // 路由挂载 app.use(router.routes()); // 静态文件处理 app.use(static(path.join(__dirname))) // 监听3001端口 app.listen(3001, () => { console.log("server run on 127.0.0.1:3001"); }); // -------server.js 结束---------- // ------- router.js ----- let Router = require("koa-router"); let routers = require("./routers/routers.js"); let router = new Router(); routers.forEach(r => { router.all(r.path, r.handle) }); module.exports = router; // ------ server.js 结束 ------ // ------ routers/routers.js start----- let demo = require('./demo/index.js') let test = require('./test/index.js') module.exports = [ demo, test ] // ------ routers/routers.js end ----- // ------ routers/demo/index.js start ----- module.exports = { path: "/demo/returnsomething", async handle(ctx, next) { // 拿到请求输入 let params = ctx.request.body; // 业务逻辑处理 console.log(params); // 返回前端数据 ctx.body = { res: "SUCCESS", data: '', code: 2000 }; } }; // ------ routers/demo/index.js end ----- // node server 访问 http://127.0.0.1:3001//demo/returnsomething ``` ## mongodb 连接 ```js /* * 1、首先我们在server.js同级目录创建utils目录 并创建connect.js 用公共方法的封装 */ // --- utils/connect.js--- // 安装依赖 npm i mongodb assert const MongoClient = require("mongodb").MongoClient; const assert = require("assert"); // Connection URL mongo服务地址 const url = "mongodb://localhost:27017"; // Database Name 确保mongo中有test库 const dbName = "test"; // 公共的连接方法 const connect = (tableName, callback) => { MongoClient.connect( url, { useNewUrlParser: true }, function(err, client) { assert.equal(null, err); const db = client.db(dbName); callback(db.collection(tableName)); client.close(); } ); }; // 封装一个向mongo插入多条数据的方法 exports.insertMany = (tableName, condition, params) => { return new Promise((resolve, reject) => { connect(tableName, collection => { collection.insertMany(condition, params, (err, result) => { if (err) { console.log(err); reject(); } else { resolve(result); } }); }); }); }; // 封装一个查找数据库的方法 exports.findMany = (tableName, condition) => { return new Promise((resolve, reject) => { connect( tableName, collection => { collection.find(condition).toArray((err, result) => { if (err) { console.log(err); reject(); } else { resolve(result); } }); } ); }); }; // ------ end ------- // 在路由中调用 // ---- routers/dome/index.js ---- const { findMany } = require("../../utils/connect"); module.exports = { path: "/servers/addapi", async handle(ctx, next) { let params = ctx.request.body; // 查找数据库 返回值 参数:表明, 条件 let res = await findMany("user", {}); console.log(res); ctx.body = { res: "SUCCESS", data: res, code: 2000 }; } }; ```