摘要:介紹使用搭建服務(wù)并連接返回前端數(shù)據(jù)項(xiàng)目初始化首先保證你的環(huán)境已經(jīng)就緒創(chuàng)建項(xiàng)目文件夾創(chuàng)建文件夾,在文件夾中右鍵在此處運(yùn)行命令行運(yùn)行安裝依賴創(chuàng)建服務(wù)在項(xiàng)目文件中創(chuàng)建一個(gè)文件在項(xiàng)目跟目錄運(yùn)行瀏覽器地址輸入返回表示一次對(duì)話的上下文包括請(qǐng)求
介紹
使用koa搭建node服務(wù) 并連接mongodb返回前端數(shù)據(jù)項(xiàng)目初始化
git https://gitee.com/wjj0720/koa...
首先保證你的node環(huán)境已經(jīng)就緒
1、創(chuàng)建項(xiàng)目文件夾
創(chuàng)建文件夾test,在文件夾中shift+右鍵 在此處運(yùn)行命令行
運(yùn)行 npm init --y
2、 安裝依賴
npm i koa koa-body koa-static koa-cors創(chuàng)建服務(wù)
// server.js /* * 1、在項(xiàng)目文件中創(chuàng)建一個(gè)server.js文件 * 2、在項(xiàng)目跟目錄運(yùn)行 node server.js * 3、瀏覽器地址輸入 http://127.0.0.1:3001/ 返回 your server run seccess */ const Koa = require("koa"); const app = new Koa(); // ctx表示一次對(duì)話的上下文(包括 HTTP 請(qǐng)求和 HTTP 回復(fù)) app.use(ctx => { ctx.body = "your server run seccess" }) // 監(jiān)聽3001端口 app.listen(3001, () => { console.log("server run on 127.0.0.1:3001"); });路由使用
/* * 1、創(chuàng)建routers文件夾 文件夾下的每個(gè)目錄都將是一個(gè)訪問的處理 * 2、routers文件夾 創(chuàng)建一個(gè)demo文件夾并擁有index.js * 3、在routers文件夾下創(chuàng)建routers.js 用戶集中路由 * 目錄結(jié)構(gòu) -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創(chuàng)建好的 let router = require("./router.js"); const app = new Koa(); // 解析post請(qǐng)求體 app.use(koaBody()); // 設(shè)置跨域 用不用插件都可 app.use(async (ctx, next) => { ctx.set("Access-Control-Allow-Origin", "*"); return next(); }); // app.use(cors()) // 路由掛載 app.use(router.routes()); // 靜態(tài)文件處理 app.use(static(path.join(__dirname))) // 監(jiān)聽3001端口 app.listen(3001, () => { console.log("server run on 127.0.0.1:3001"); }); // -------server.js 結(jié)束---------- // ------- 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 結(jié)束 ------ // ------ 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) { // 拿到請(qǐng)求輸入 let params = ctx.request.body; // 業(yè)務(wù)邏輯處理 console.log(params); // 返回前端數(shù)據(jù) ctx.body = { res: "SUCCESS", data: "", code: 2000 }; } }; // ------ routers/demo/index.js end ----- // node server 訪問 http://127.0.0.1:3001//demo/returnsomethingmongodb 連接
/* * 1、首先我們?cè)趕erver.js同級(jí)目錄創(chuàng)建utils目錄 并創(chuàng)建connect.js 用公共方法的封裝 */ // --- utils/connect.js--- // 安裝依賴 npm i mongodb assert const MongoClient = require("mongodb").MongoClient; const assert = require("assert"); // Connection URL mongo服務(wù)地址 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(); } ); }; // 封裝一個(gè)向mongo插入多條數(shù)據(jù)的方法 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); } }); }); }); }; // 封裝一個(gè)查找數(shù)據(jù)庫的方法 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 ------- // 在路由中調(diào)用 // ---- routers/dome/index.js ---- const { findMany } = require("../../utils/connect"); module.exports = { path: "/servers/addapi", async handle(ctx, next) { let params = ctx.request.body; // 查找數(shù)據(jù)庫 返回值 參數(shù):表明, 條件 let res = await findMany("user", {}); console.log(res); ctx.body = { res: "SUCCESS", data: res, code: 2000 }; } };
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19349.html
安裝搭建項(xiàng)目的開發(fā)環(huán)境 視頻地址:https://www.cctalk.com/v/15114357764004 showImg(https://segmentfault.com/img/remote/1460000012470016?w=1214&h=718); 文章 Koa 起手 - 環(huán)境準(zhǔn)備 由于 koa2 已經(jīng)開始使用 async/await 等新語法,所以請(qǐng)保證 node 環(huán)境在 7.6...
摘要:從零開始搭建同構(gòu)應(yīng)用四搭建完善上一篇我們使用了的方式測(cè)試了,這篇文章來講如何在前文的基礎(chǔ)上搭建一個(gè),實(shí)現(xiàn)真正意義上的。至此,一個(gè)簡單的框架已經(jīng)搭建完成,剩下的工作就是結(jié)合工作需要,在里面添磚加瓦啦。 從零開始搭建React同構(gòu)應(yīng)用(四):搭建Koa Server & 完善SSR 上一篇我們使用了CLI的方式測(cè)試了SSR,這篇文章來講如何在前文的基礎(chǔ)上搭建一個(gè)Koa Server,實(shí)現(xiàn)真...
摘要:本篇是該系列的第一篇,本地開發(fā)環(huán)境搭建以及接入微信。若確認(rèn)此次請(qǐng)求來自微信服務(wù)器,原樣返回參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。 一、簡介 關(guān)于微信公眾號(hào)的介紹就省略了,自行搜索。注冊(cè)過程也不說了。我們會(huì)直接注冊(cè)測(cè)試號(hào)來實(shí)現(xiàn)代碼。這將會(huì)是個(gè)全面講解微信公眾號(hào)開發(fā)的系列教程。本篇是該系列的第一篇,本地開發(fā)環(huán)境搭建以及接入微信。在開始之前最好去看看開發(fā)者文檔微信公眾平臺(tái)技術(shù)文...
視頻地址:https://www.cctalk.com/v/15114923888328 showImg(https://segmentfault.com/img/remote/1460000012744407?w=1602&h=966); 視圖 Nunjucks 彩虹是上帝和人類立的約,上帝不會(huì)再用洪水滅人。 客戶端和服務(wù)端之間相互通信,傳遞的數(shù)據(jù)最終都會(huì)展示在視圖中,這時(shí)候就需要用到『模板引擎...
摘要:開發(fā)總結(jié)整體框架搭建是目前世界最火的框架,無論從性能,還是流程控制上,和它的后宮中間件都是非常好的解決方案。 EDU_BOOK 開發(fā)總結(jié) KOA2 + Mongodb 整體框架搭建API Koa2是目前Node.js世界最火的web框架,無論從性能,還是流程控制上,koa 2和它的后宮(中間件)都是非常好的解決方案。本文主要koa 2的文檔解讀和runkoa介紹,讓大家對(duì)koa 2有一...
閱讀 3494·2021-11-18 10:02
閱讀 1623·2021-10-12 10:12
閱讀 3007·2021-10-09 09:53
閱讀 4902·2021-09-09 09:34
閱讀 883·2021-09-06 15:02
閱讀 2787·2021-08-05 10:02
閱讀 3149·2019-08-30 15:44
閱讀 3133·2019-08-28 18:04