使用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 }; } };