使用koa搭建node服务 并链接mongodb返回前端数据
git https://gitee.com/wjj0720/koa...
首先保证你的node环境已经就绪
一、建立项目文件夹前端
建立文件夹test,在文件夹中shift+右键 在此处运行命令行
运行 npm init --y
二、 安装依赖node
npm i koa koa-body koa-static koa-cors
// server.js /* * 一、在项目文件中建立一个server.js文件 * 二、在项目跟目录运行 node server.js * 三、浏览器地址输入 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"); });
/* * 一、建立routers文件夹 文件夹下的每一个目录都将是一个访问的处理 * 二、routers文件夹 建立一个demo文件夹并拥有index.js * 三、在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
/* * 一、首先咱们在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 }; } };