介绍
使用koa搭建node服务 并连接mongodb返回前端数据 git
项目初始化
首先保证你的node环境已经就绪
-
1、创建项目文件夹
创建文件夹test,在文件夹中shift+右键 在此处运行命令行 运行 npm init --y
-
2、 安装依赖
npm i koa koa-body koa-static koa-cors
创建服务
// 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");});
路由使用
/* * 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 连接
/* * 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 }; } };